Skip to main content

银河麒麟v10 升级 SSH由8.6到9.9

根据您提供的 yum check-update 输出结果,情况如下:

结论: 您的系统官方源中目前没有更新的 OpenSSH 版本

  • 当前版本: 8.2p1
  • 源中最新版本: 8.2p1-16.p27.ky10

虽然版本号相同,但这是一个针对麒麟系统的修订版。它可能包含部分安全补丁(Backport),但通常无法修复像 CVE-2020-15778 这种涉及代码逻辑变更的漏洞。

因此,为了彻底修复漏洞,您需要采用 源码编译安装 的方式将 OpenSSH 升级到最新的稳定版(建议 9.9p2 或更高)。


🚀 升级操作指南 (CentOS/Kylin V10)

由于涉及到底层核心组件升级,请务必严格按照以下步骤操作。

⚠️ 第一阶段:准备工作与备份 (至关重要)

严重警告:

  1. 不要关闭当前的 SSH 窗口! 请新开一个窗口进行测试,确保新服务正常后再关闭旧窗口。
  2. 建议开启 Telnet 服务或通过 VNC/IPMI 控制台操作,以防升级失败导致无法远程连接。
  1. 安装编译依赖:

    sudo yum install -y gcc make zlib-devel openssl-devel pam-devel systemd-devel wget tar
    
  2. 备份现有文件:

    # 备份配置文件
    sudo cp -r /etc/ssh /etc/ssh.bak.$(date +%F)
    # 备份二进制文件
    sudo cp /usr/bin/ssh /usr/bin/ssh.bak
    sudo cp /usr/sbin/sshd /usr/sbin/sshd.bak
    

📥 第二阶段:下载与编译

  1. 下载最新源码包: 我们将下载最新的 OpenSSH 9.9p2(修复了您提到的漏洞及后续多个高危漏洞)。

    cd /tmp
    wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.9p2.tar.gz
    tar -zxf openssh-9.9p2.tar.gz
    cd openssh-9.9p2
    
  2. 编译与安装: 注意配置参数,确保兼容麒麟系统的 PAM 认证和 Systemd 管理。

    ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir=/usr/lib64 --with-zlib --with-pam --with-systemd
    
    make
    sudo make install
    

🔧 第三阶段:配置与服务替换

  1. 修正配置文件权限: 新版本可能会生成新的配置示例,我们需要确保主配置文件允许 Root 登录(除非您有专门的普通用户)。

    # 检查配置文件中 PermitRootLogin 是否为 yes
    sudo sed -i 's/#PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
    # 如果是密码登录,确保 PasswordAuthentication 为 yes
    sudo sed -i 's/#PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config
    
  2. 替换 Systemd 服务文件: 这是最关键的一步,否则 systemctl restart sshd 可能会失败。

    # 复制官方提供的 systemd 文件
    sudo cp contrib/redhat/sshd.init /etc/init.d/sshd
    sudo chmod +x /etc/init.d/sshd
    
    # 如果存在旧的 systemd 服务文件,建议移除或覆盖(视具体系统情况而定)
    # 这里我们尝试直接重启服务
    
  3. 重启 SSH 服务:

    sudo systemctl daemon-reload
    sudo systemctl restart sshd
    

✅ 第四阶段:验证

  1. 检查版本:新开的终端窗口执行:

    ssh -V
    

    如果显示 OpenSSH_9.9p2,则说明升级成功。

  2. 清理: 确认无误后,可以删除 /tmp 下的源码包。


💡 补充说明

如果您觉得编译安装风险太大,且该服务器不对外网开放,您可以暂时维持现状,但建议结合之前的方案二(临时缓解),即重命名 /usr/bin/scp,以阻断最直接的漏洞利用途径。