最稳妥的方式是优先使用系统自带的包管理器升级,而非手动编译;centos/rhel用yum update openssh,ubuntu/debian用apt install openssh-server,因发行版会反向移植上游安全补丁至稳定版本,无需追求最新源码版,可避免兼容性风险。

最稳妥的方式是优先使用系统自带的包管理器升级,而不是手动编译。CentOS/RHEL 用 yum update openssh,Ubuntu/Debian 用 apt install openssh-server。发行版厂商会把上游安全补丁反向移植到当前稳定版本中,无需追求最新源码版,也避免破坏系统兼容性。
确认漏洞与当前版本
先查清楚你面临的是哪个 CVE,比如 CVE-2024-6387(ALPACA 漏洞)影响 OpenSSH 8.5p1 至 9.7p1。运行以下命令查看当前版本:
- ssh -V — 查客户端版本
-
sshd -V — 查服务端版本(可能需加
2>&1) - 再查系统是否已提供修复:访问 Red Hat 安全公告页或 Ubuntu CVE 数据库,输入编号搜索“Fixed in”字段
推荐方式:用包管理器升级
这是官方支持、风险最低的方法:
宝塔Linux面板11.8.1为官网当前正式版,新增AI建站能力并经过宝塔网站工程师深度调教,开放自定义AI功能API,同时对WAF进行界面重构和深度优化,提升拦截能力与运维效率。
- CentOS 7/8:执行 yum clean all && yum update openssh\*
- CentOS Stream / RHEL 8+:用 dnf update openssh
- Ubuntu 20.04+ 或 Debian 11+:sudo apt update && sudo apt install --only-upgrade openssh-server
- 升级后重启服务:systemctl restart sshd(注意不是 ssh)
不推荐但偶有需要的手动编译
仅当系统已停止维护(如 CentOS 7 EOL 后)、且漏洞扫描强制要求特定高版本时才考虑。必须满足:
- 提前启用 telnet 或 IPMI 等备用通道,防止 SSH 中断失联
- 备份 /etc/ssh/sshd_config、/usr/sbin/sshd 和 /etc/pam.d/sshd
- 先升级 OpenSSL(OpenSSH ≥9.4 要求 OpenSSL ≥1.1.1),再编译 OpenSSH,不能直接替换系统 OpenSSL 动态库
- 安装时指定 --prefix=/usr/local/openssh,避免覆盖系统路径;用 systemd 服务文件指向新二进制,而非替换原
/usr/sbin/sshd
验证是否修复成功
升级完成后别急着关终端,做三件事:
- 再次运行 sshd -V,确认版本号已更新且包含修复对应 CVE 的提交哈希(可查 changelog)
- 用另一台机器尝试连接:ssh -o ConnectTimeout=5 user@your-server
- 检查日志:journalctl -u sshd -n 30 --no-pager,确认无 “fatal” 或 “reexec” 报错










