CentOS SSH如何更新与升级
导读:CentOS 上 OpenSSH 的更新与升级指南 一 升级策略与准备 优先使用系统仓库的更新(安全、可回滚);仅在确有安全需求且仓库版本过低时,才考虑第三方仓库或源码编译升级。升级前务必做好完整备份与回退方案。 关键准备: 备份配置与...
CentOS 上 OpenSSH 的更新与升级指南
一 升级策略与准备
- 优先使用系统仓库的更新(安全、可回滚);仅在确有安全需求且仓库版本过低时,才考虑第三方仓库或源码编译升级。升级前务必做好完整备份与回退方案。
- 关键准备:
- 备份配置与主机密钥:
- 备份配置:
cp -a /etc/ssh /etc/ssh.bak_$(date +%F) - 备份主机密钥:
cp -a /etc/ssh/ssh_host_* /root/ssh_host_keys.bak_$(date +%F)
- 备份配置:
- 安装编译与依赖工具(源码/部分RPM构建时需要):
yum groupinstall -y "Development Tools"yum install -y gcc zlib-devel openssl-devel pam-devel rpm-build perl perl-devel
- 保持现有会话不断开,先开一个备用终端,验证新连接可用后再关闭旧会话。
- 防火墙放行(如启用 firewalld):
firewall-cmd --permanent --add-service=ssh & & firewall-cmd --reload
以上做法中的备份、依赖安装与防火墙放行为通用安全操作,源码编译示例与依赖项在多篇实践文档中均有体现。
- 备份配置与主机密钥:
二 方法一 使用系统仓库更新(推荐)
- 适用于希望稳妥、可回滚的场景。
- 步骤:
- 检查可用更新:
yum check-update openssh-server openssh-clients - 执行更新:
yum update -y openssh-server openssh-clients - 重启服务:
systemctl restart sshd - 验证版本:
- 客户端:
ssh -V - 服务端:
sshd -V(需 root)
- 客户端:
- 检查可用更新:
- 回退(如出现问题):
yum downgrade -y openssh-server openssh-clients并重启 sshd。
该方法是日常维护的首选路径,简单且风险低。
三 方法二 使用 RPM 包升级(含离线场景)
- 适用于 CentOS 7 等官方源版本较旧、但可通过可信 RPM 包或内网镜像快速升级的场景。
- 在线方式(有可用仓库时):
- 安装/更新:
yum localinstall -y openssh-*.rpm或rpm -Uvh openssh-*.rpm
- 安装/更新:
- 离线方式(无外网时):
- 在一台可联网机器下载对应系统/架构的 RPM 包(如 openssh-9.9p1 的 el7 x86_64/aarch64 包),拷贝到目标机后执行:
yum localinstall -y openssh-*.rpm或rpm -Uvh openssh-*.rpm
- 在一台可联网机器下载对应系统/架构的 RPM 包(如 openssh-9.9p1 的 el7 x86_64/aarch64 包),拷贝到目标机后执行:
- 关键细节与回退:
- 升级前备份:
/etc/ssh/sshd_config与/etc/pam.d/sshd(不少 RPM 升级不会覆盖配置,但覆盖时可用备份快速恢复)。 - 主机密钥权限:
chmod 600 /etc/ssh/ssh_host_*_key - 重启服务:
systemctl restart sshd - 验证版本:
ssh -V、sshd -V - 回退:
rpm -Uvh --oldpackage openssh-< 旧版本> .rpm或yum downgrade -y openssh-server openssh-clients
社区实践中常见做法包括备份配置与 PAM 文件、设置密钥权限、以及使用本地 RPM 安装/回退,便于在受限网络环境快速完成升级。
- 升级前备份:
四 方法三 源码编译升级(当仓库与 RPM 均无法满足时)
- 适用于必须获得上游新版本(如修复特定 CVE)的场景。
- 步骤(示例):
- 安装依赖:
yum groupinstall -y "Development Tools";yum install -y zlib-devel openssl-devel pam-devel - 备份:
cp -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-passwords
- 编译与安装:
make & & make install - 权限与替换:
chmod 600 /etc/ssh/ssh_host_*_key- 必要时替换二进制:
mv /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 -V
- 安装依赖:
- 风险提示:
- 编译升级可能覆盖或影响系统文件;务必保留备份与回退路径。
- 若系统启用了 SELinux,需确保策略与 PAM 配置匹配,避免登录失败(必要时临时
setenforce 0排查,但生产环境不建议长期关闭)。
源码编译流程、权限设置与常见排错要点在多篇实践文档中有详细说明。
五 验证与回退
- 版本与服务状态:
- 版本:
ssh -V、sshd -V - 服务:
systemctl status sshd;如有问题,查看日志:journalctl -u sshd -b
- 版本:
- 快速回退路径:
- 仓库安装:
yum downgrade -y openssh-server openssh-clients & & systemctl restart sshd - RPM 安装:
rpm -Uvh --oldpackage < 旧版RPM>或yum downgrade -y < 旧版包> - 源码安装:用备份的二进制与配置替换回去(如
cp /usr/bin/ssh.old /usr/bin/ssh、cp /usr/sbin/sshd.bak /usr/sbin/sshd),再重启 sshd。
版本核验、服务重启与回退步骤是升级操作的必要闭环,可显著降低风险。
- 仓库安装:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS SSH如何更新与升级
本文地址: https://pptw.com/jishu/767550.html
