前言本文主要用于升级OpenSSL升级至3.1版本及OpenSSH到9.4版本并替换OpenSSH使用的OpenSSL版本来修复旧版本的漏洞查看OpenSSL版本(base) ➜ ~ openssl version OpenSSL 1.0.2k-fips 26 Jan 2017查看OpenSSH版本(base) ➜ ~ ssh -V OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017下面所有操作均是root用户完成下载依赖包OpenSSL：下载地址OpenSSH：下载地址Zlib：下载地址Perl：下载地址都下载最新版本，然后上传到服务器，如：(base) ➜ openssh漏洞修复/ ll total 78272 -rw-r--r--@ 1 lengwen staff 1.8M 10 16 11:13 openssh-9.4p1.tar.gz -rw-r--r--@ 1 lengwen staff 15M 10 16 14:44 openssl-3.1.2.tar.gz -rw-r--r--@ 1 lengwen staff 20M 10 13 10:10 perl-5.38.0.tar.gz -rw-r--r--@ 1 lengwen staff 1.4M 10 16 11:30 zlib-1.3.tar.gz安装安装Perl解压tar -zxvf perl-5.38.0.tar.gz进入解压路径，编译并安装cd perl-5.38.0/ ./Configure -des -Dprefix=/usr/local/perl -Dusethreads -Uversiononly make && make install备份旧的perlcd /usr/bin mv perl perl.old然后搞个软连接ln -s /usr/local/perl/bin/perl /usr/bin/perl现在看看perl的版本perl -version安装OpenSSL解压tar -zxvf openssl-3.1.2.tar.gz进入解压路径，编译并安装cd openssl-3.1.2/ ./config --prefix=/usr/local/openssl make && make install替换当前版本mv /usr/bin/openssl /usr/bin/openssl.old mv /usr/lib64/openssl /usr/lib64/openssl.old mv /usr/lib64/libssl.so /usr/lib64/libssl.so.old ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl ln -s /usr/local/openssl/include/openssl /usr/include/openssl ln -s /usr/local/openssl/lib/libssl.so /usr/lib64/libssl.so echo "/usr/local/openssl/lib" >> /etc/ld.so.conf添加软连接ln -s /usr/local/openssl/lib64/libssl.so.3 /usr/lib64/libssl.so.3 ln -s /usr/local/openssl/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3查看OpenSSL的版本(base) ➜ ~ openssl version OpenSSL 3.1.2 1 Aug 2023 (Library: OpenSSL 3.1.2 1 Aug 2023)安装Zlib解压tar -zxvf zlib-1.3.tar.gz进入解压路径，编译并安装cd zlib-1.3/ ./configure --prefix=/usr/local/zlib make && make install安装OpenSSH备份现有SSHcp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak cp /usr/sbin/sshd /usr/sbin/sshd.bak解压tar -zxvf openssh-9.4p1.tar.gz进入解压路径，编译并安装cd openssh-9.4p1/ ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-md5-passwords --with-ssl-dir=/usr/local/openssl --without-zlib-version-check make && make install重启ssh服务systemctl restart sshd退出终端重新登录并查看版本(base) ➜ ~ ssh -V OpenSSH_9.4p1, OpenSSL 3.1.2 1 Aug 2023可能遇到的问题编译报错(base) ➜ zlib-1.3 ./configure --prefix=/usr/local/zlib Checking for gcc... Compiler error reporting is too harsh for ./configure (perhpas remove -Werror) ** ./configure aborting没有装gcc，安装gcc即可PAM问题如果在执行./configure --prefix=/usr --sysconfdir=/etc/ssh时报错PAM找不到，可以使用如下命令安装yum install -y pam-devel编译OpenSSH时报证书无法加载加上权限即可chmod 700 /etc/ssh/ssh_host_rsa_key chmod 700 /etc/ssh/ssh_host_ecdsa_key chmod 700 /etc/ssh/ssh_host_ed25519_key升级完成后一直报密码错误如果升级完成之后一直报密码错误，则修改/etc/ssh/sshd_config# 如果PermitRootLogin有注释直接取消注释 PermitRootLogin yes # 注释掉下面3行代码 # GSSAPIAuthentication yes # GSSAPICleanupCredentials no # UsePAM yes重启ssh即可结束OpenSSH版本升级结束