1. 背景
首先介绍下为什么升级,项目上做漏洞扫描,扫出来:OpenSSH 安全漏洞(CVE-2023-38408),OpenSSH 命令注入漏洞(CVE-2020-15778),OpenSSH 安全漏洞(CVE-2023-48795),OpenSSH 安全漏洞(CVE-2023-51385)这些漏洞,整体看下受影响版本是9.6之前。
2. 开始升级(我会把需要的资源包免费放到文章下面,升级过程中前往别断开连接!!!)
2.1 先查看openssh版本
ssh -V
会看到版本:
OpenSSH_9.3p1,OpenSSL 1.0.2k-fips
如果OpenSSL版本太低就得先升级Open SSL,我这个就是版本太低,所以先升级Open SSL
通过whereis ssh 找到openssh的文件(由于为项目,截图是在网上找的,基本路径都一样)
2.2 备份ssh和sshd文件或目录
mv /etc/ssh /etc/ssh_old.bak
mv /usr/bin/ssh /usr/bin/ssh_old.bak
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen_old.bak
mv /usr/sbin/sshd /usr/sbin/sshd_old.bak
mv /etc/pam.d/sshd.pam /etc/pam.d/sshd.pam_old.bak
注意,所以文件都要放到/usr/local/目录下。
tar -zxvf openssl-1.1.1d.tar.gz
cd openssl-1.1.1d
./config --prefix=/usr/local/openssl -d shared
make && make install
2.3 创建软连接
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
2.4 验证openssl(openssl version)
如果版本和之前一样,再重新连接一下
3. 升级Openssh(注,也是解压到/usr/local/目录下)
3.1将openssh上传并解压
tar -zxvf openssh-9.6p1.tar.gz
3.2 卸载原有的openssh包
rpm -e --nodeps `rpm -qa | grep openssh`
3.3 切换到解压后的openssh目录
cd openssh-9.6p1
3.4 初始化openssh
./configure --prefix=/usr/local/openssh9p6 --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/openssl --with-zlib
3.4.1如果报错configure: error: Your OpenSSL headers do not match your
则在初始化语句后面加上--without-openssl-header-check。
./configure --prefix=/usr/local/openssh9p6 --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/openssl --with-zlib --without-openssl-header-check
3.5 编译安装
make -j 4
make install
3.6复制新的配置文件到原来目录
cp /usr/local/openssh9p6/sbin/sshd /usr/sbin/sshd
cp /usr/local/openssh9p6/bin/ssh /usr/bin/ssh
cp /usr/local/openssh9p6/bin/ssh-keygen /usr/bin/ssh-keygen
cp -p contrib/redhat/sshd.init /etc/init.d/sshd
3.7 添加权限
chmod +x /etc/init.d/sshd
3.8 修改sshd_config文件(一定)
vi /etc/ssh/sshd_config
PermitRootLogin yes 、PubkeyAuthentication yes、PasswordAuthentication yes 将配置文件中这几个改为yes
3.9 开启开机自启sshd
systemctl enable sshd
3.10 重启sshd
systemctl restart sshd
3.11 验证是否成功
注意,如果还是和之前的版本一样,再连接一下,重新执行ssh -V。
ssh -V