CentOS 上 OpenSSH 的更新与升级指南
一 升级策略与准备
cp -a /etc/ssh /etc/ssh.bak_$(date +%F)cp -a /etc/ssh/ssh_host_* /root/ssh_host_keys.bak_$(date +%F)yum groupinstall -y "Development Tools"yum install -y gcc zlib-devel openssl-devel pam-devel rpm-build perl perl-develfirewall-cmd --permanent --add-service=ssh && firewall-cmd --reload二 方法一 使用系统仓库更新(推荐)
yum check-update openssh-server openssh-clientsyum update -y openssh-server openssh-clientssystemctl restart sshdssh -Vsshd -V(需 root)yum downgrade -y openssh-server openssh-clients 并重启 sshd。三 方法二 使用 RPM 包升级(含离线场景)
yum localinstall -y openssh-*.rpm 或 rpm -Uvh openssh-*.rpmyum localinstall -y openssh-*.rpm 或 rpm -Uvh openssh-*.rpm/etc/ssh/sshd_config 与 /etc/pam.d/sshd(不少 RPM 升级不会覆盖配置,但覆盖时可用备份快速恢复)。chmod 600 /etc/ssh/ssh_host_*_keysystemctl restart sshdssh -V、sshd -Vrpm -Uvh --oldpackage openssh-<旧版本>.rpm 或 yum downgrade -y openssh-server openssh-clients四 方法三 源码编译升级(当仓库与 RPM 均无法满足时)
yum groupinstall -y "Development Tools";yum install -y zlib-devel openssl-devel pam-develcp -a /etc/ssh /etc/ssh.bak_$(date +%F) 与主机密钥wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-<版本>.tar.gztar xzf openssh-<版本>.tar.gz && cd openssh-<版本>./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwordsmake && make installchmod 600 /etc/ssh/ssh_host_*_keymv /usr/bin/ssh /usr/bin/ssh.old && cp ssh /usr/bin/ssh;mv /usr/sbin/sshd /usr/sbin/sshd.bak && cp sshd /usr/sbin/sshd/etc/ssh/sshd_config(如 PermitRootLogin、PasswordAuthentication、UsePAM 等)systemctl restart sshd 或按系统提供的 init 脚本重启ssh -V、sshd -Vsetenforce 0 排查,但生产环境不建议长期关闭)。五 验证与回退
ssh -V、sshd -Vsystemctl status sshd;如有问题,查看日志:journalctl -u sshd -byum downgrade -y openssh-server openssh-clients && systemctl restart sshdrpm -Uvh --oldpackage <旧版RPM> 或 yum downgrade -y <旧版包>cp /usr/bin/ssh.old /usr/bin/ssh、cp /usr/sbin/sshd.bak /usr/sbin/sshd),再重启 sshd。