oracle linux 95 升级openssh 10 和openssl 3.5 过程记录
1. 安装操作系统,注意如果可以选择,选择安装开发工具,主要是后续需要编译安装,需要gcc 编译工具。
2. 安装操作系统后,检查zlib 、zlib-dev是否安装,如果没有,可以使用安装镜像做本地源安装,在编译openssh 需要使用。
(1) 挂载安装镜像
mount /dec/cdrom /mnt
(2) 修改yum 配置
(3) yum makecache
(4) 安装gcc
yum install gcc
3. 安装操作系统后,检查perl 是否安装,如果没有,可以使用安装镜像做本地源安装,编译openssl 的脚本是使用perl编写的。
4. 编译安装openssl
(1)上传解压
(2)./Configure --prefix=/usr/local/openssl
(3) make
(4) make install
make 和make install的过程比较长,需耐心等待。如果没有报错则进行下一步,如果有报错需要解决报错问题。
(5)执行如下操作:
mv /usr/bin/openssl /usr/bin/openssl.bk
mv /usr/include/openssl /usr/include/openssl.bk (oraclelinux 95 中没有这个目录)
cp /usr/local/openssl/bin/openssl /usr/bin/openssl ( 替代就版本的执行程序)
cp -R /usr/local/openssl/include/ /usr/include/
(注意最后的斜线,意识就是将include下的opessl目录拷贝到对应 目录中)
这时 openssl version命令会报错:
原因在于openssl 编译安装后的新版本的lib库文件还没有与系统关联
之前的做法是使用以下方式强行关联
export LD_LIBRAY_PATH = /usr/local/openssl/lib64:$LD_LIBRARY_PATH
ldconfig -v
这样暂时看到openssl version 是可以执行成功的,但打开终端时会报错:
flatpak:symbol lookup error: /lib64/libldap.so.2: undefined symbol:EVP md2,version OPENSSL 3.0.0
实际上上无需如此,报错的两个文件实际上在编译安装后的/usr/local/openssl/lib64目录中是存在的,只需建立软连接即可。注意软连接要先删除再创建,直接用cp覆盖是不行的。
rm /lib64/libssl.so.3
rm /lib64/libcrypto.so.3
ln -s /usr/lcoal/openssl/lib64/libcrypto.so.3 /lib64/libcrypto.so.3
ln -s /usr/lcoal/openssl/lib64/libssl.so.3 /lib64/libssl.so.3
(6)检查:
执行 openssl version 看下,或者ssh -V 看下openssl 的版本是否 升级到新版本
重启系统,再检查下openssl的版本,并打开一个终端,看是否有报错。
5. 编译安装openssh
(1)上传解压
(2) ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-openssl-inludes=/usr/local/openssl/include -with-ssl-dir=/usr/local/openssl --with-zlib --with-pam
注: 如果不使用pam 也可以不用带后面这个with-pam参数。
(3)make
(4) make install