OpenSSH的升级过程会需要依赖ZLIB、Perl、OpenSSL,PAM。所以先要离线下载这些依赖对应的包:zlib-1.2.13.tar.gz,perl-5.38.0.tar.gz,Linux-PAM-1.3.1.tar.xz,openssl-1.1.1w.tar.gz,openssh-9.3p2.tar.gz。
1、安装/升级 zlib
tar -zxvf zlib-1.2.13.tar.gz
cd zlib-1.2.13
./configure --prefix=/usr/zlib
编译安装:
make && make install
卸载原zlib包,并替换新的。
cd /lib64
rm -rf /usr/lib64/libz.so.1.2.7
rm -rf /usr/lib64/libz.so.1
rm -rf /usr/lib64/libz.so
复制新的程序到/lib64/目录下
cp /usr/zlib/lib/libz.so.1.2.13 /usr/lib64/
cp /usr/zlib/lib/libz.so.1 /usr/lib64/
cp /usr/zlib/lib/libz.so /usr/lib64/
软链接重定向为新文件
ln -snf /usr/lib64/libz.so.1.2.13 /usr/lib64/libz.so.1
ln -snf /usr/lib64/libz.so.1.2.13 /usr/lib64/libz.so
2、升级 Perl
perl -v //查看perl版本 过低就不支持高版本的openssh更新
tar -zxf perl-5.38.0.tar.gz
cd perl-5.38.0
指定编译安装路径:
./Configure -de
编译安装:
make && make install
##但这只是安装完成了,系统调用还是旧版,要把旧版本替换掉。
备份旧程序
mv /usr/bin/perl /usr/bin/perl.bak
建立新的软连接,使安装的perl生效
ln -s /usr/local/bin/perl /usr/bin/perl
检测perl -v
3、安装pam-devel
tar -xf Linux-PAM-1.3.1.tar.xz
cd Linux-PAM-1.3.1
指定编译安装路径:
./configure
编译安装:
make && make install
4、升级 openssl
查看openssl的版本 最低不能低于1.1.1
ssh -V
openssl version -a
备份旧程序
cp /usr/bin/openssl /usr/bin/openssl.old
cp -r /usr/include /usr/includeold
(一)编译源码安装。
tar -xzvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
./config #不带任何参数。
编译安装:
make && make install
查看版本:
openssl version -a
升级后如果执行 openssl version 命令出现:
openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory错误。执行以下命令即可。
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
升级后如果执行 openssl version 命令出现:
openssl: /usr/lib/mic_lib/libssl.so.1.1: version `OPENSSL_1_1_1' not found (required by openssl)
openssl: /usr/lib/mic_lib/libcrypto.so.1.1: version `OPENSSL_1_1_1' not found (required by openssl)。
使用命令删除即可。
rm -rf /usr/lib/mic_lib/libssl.so.1.1
rm -rf /usr/lib/mic_lib/libcrypto.so.1.1
5、进行openssh离线更新
先进行相关文件备份
cp /etc/pam.d/sshd /etc/pam.d/sshd20240117
cp -r /etc/ssh /etc/ssh20240117
开始进行解压缩然后进行相关操作
tar -xzvf openssh-9.3p2.tar.gz
cd openssh-9.3p2
停止SSH程序
systemctl stop sshd.service
删除旧的ssh程序
rm -rf /etc/ssh
指定编译安装路径与参数:
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords --with-ssl-dir=/usr/ssl
编译安装:
make && make install
复制启动程序脚本到/etc/init.d/下
cd contrib/redhat
cp sshd.init /etc/init.d/sshd
设置开机自启
systemctl enable sshd
把配置文件和程序恢复
cp /etc/ssh20240117/sshd_config /etc/ssh/sshd_config
cp /etc/pam.d/sshd20240117 /etc/pam.d/sshd
检查ssh配置
sshd -t #提示79、80行报错
编辑vi /etc/ssh/sshd_config配置文件,将79、90行注释。
然后使用配置文件启动程序
/usr/sbin/sshd -t -f /etc/ssh/sshd_config
systemctl start sshd.service
最后查看一下OpenSSH版本:
这是精简版本,详细版可看CentOS7.6系统OpenSSH升级到openssh-9.3p2(漏洞修复):http://t.csdnimg.cn/svJOK