漏洞修复 CentOS x86_64 OpenSSH 升级操作文档
1. 操作背景
- 当前版本:OpenSSH_9.6p1, OpenSSL 3.0.12
- 已知风险:OpenSSH < 10.0 存在
DisableForwarding
指令绕过漏洞。 - 目标:升级至 OpenSSH 10.0 或以上版本,并保证可用性。
2. 操作前准备
2.1 创建虚拟机快照(强烈建议)
在 VMware/Hyper-V/云平台(如 OpenStack、阿里云、VMware ESXi)上运行时:
- 进入管理平台,找到对应虚拟机 → 创建快照
- 名称:
before-openssh-upgrade-YYYYMMDD
- 内容:包含内存和磁盘快照
- 名称:
- 确认快照创建成功
2.2 开启控制台/串口登录方式
避免 SSH 失败后无法进入系统:
- 确认云平台支持 VNC/控制台 登录
- 或者预留 root 用户的本地终端 登录方式
2.3 备份 OpenSSH 配置
cp -av /etc/ssh /etc/ssh.bak.$(date +%F)
cp -av /usr/lib/systemd/system/sshd.service /root/sshd.service.bak.$(date +%F) 2>/dev/null
2.4 安装备用 SSH 服务(推荐)
避免升级失败后 SSH 服务不可用:
yum install -y telnet # 或 dropbear
2.5 开启第二个 SSH 会话
升级过程中保持一个会话不动,另一个执行操作。
3. 升级步骤
升级前查询
[root@localhost ~]# ssh -V
OpenSSH_9.6p1, OpenSSL 3.0.12 24 Oct 2023
[root@localhost ~]#
升级前创建虚机快照
平台操作
具体方法
在执行前
- 先创建虚机快照
- 保持两个 SSH 会话,一个执行脚本,一个备用
- openssl 可能不兼容高版本,也需要升级
执行脚本
# openssl
https://openssl-library.org/source/
tar zxvf openssl-3.5.3.tar.gz
cd openssl-3.5.3
./config --prefix=/usr/local/openssl3 --openssldir=/usr/local/openssl3
make -j$(nproc)
make install# 必要依赖(OpenSSH 10 编译需要)
yum groupinstall -y "Development Tools"
yum install -y zlib-devel pam-devel libselinux-devel perl# 设置环境变量
export PATH=/usr/local/openssl3/bin:$PATH
export CPPFLAGS="-I/usr/local/openssl3/include"
export LDFLAGS="-L/usr/local/openssl3/lib64"
export PKG_CONFIG_PATH="/usr/local/openssl3/lib/pkgconfig"# ssh
https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-10.0p2.tar.gz
cd /opt/openssh10
tar zxvf openssh-10.0p2.tar.gz
cd openssh-10.0p1./configure --prefix=/opt/openssh10 \--sysconfdir=/etc/ssh \--with-md5-passwords \--with-privsep-path=/var/lib/sshd \--with-pam \--with-openssl=/usr/local/openssl3
make -j$(nproc)
make install# -----------------------------
# 备份旧 SSH 并创建软链接
# -----------------------------
mv /usr/sbin/sshd /usr/sbin/sshd.old
mv /usr/bin/ssh /usr/bin/ssh.oldln -s /opt/openssh10/bin/ssh /usr/bin/ssh
ln -s /opt/openssh10/sbin/sshd /usr/sbin/sshd# 重启 sshd
systemctl restart sshd
systemctl status sshd# 解决默认ssh为旧版本的问题
[root@localhost bin]# ssh -V
OpenSSH_9.6p1, OpenSSL 3.0.12 24 Oct 2023
[root@localhost bin]# /opt/openssh10/sbin/sshd -V
OpenSSH_10.0p2, OpenSSL 3.5.3 16 Sep 2025
[root@localhost bin]# # ~/ 表示当前账号所属路径,如 root 账号,则为 /root
echo 'export PATH=/usr/bin:$PATH' >> ~/.bashrc
source ~/.bashrc# 完成后
[root@localhost bin]# ssh -V
OpenSSH_10.0p2, OpenSSL 3.5.3 16 Sep 2025
[root@localhost bin]# /opt/openssh10/sbin/sshd -V
OpenSSH_10.0p2, OpenSSL 3.5.3 16 Sep 2025
[root@localhost bin]#
验证
- 新开一个 SSH 会话测试登录
- ssh -V 应显示 OpenSSH_10.0p1
回退方法
mv /usr/sbin/sshd.old /usr/sbin/sshd
mv /usr/bin/ssh.old /usr/bin/sshsystemctl daemon-reexec
systemctl restart sshd
回退方案
使用快照回滚
如果 SSH 完全不可用,直接恢复到 before-openssh-upgrade
快照。
使用备份恢复
参考上述 回退方法
使用备用登录方式
若 SSH 不可用,可通过 控制台 / telnet / dropbear 登录修复。