Centos7 系统默认源中 OpenSSH 最新版本是 OpenSSH_7.4p1,因此无法通过:yum update -y openssh
命令升级到更高版本。然而 OpenSSH_7.4p1 版本已经严重落后并被爆出有多个高危漏洞,下面本文就分享一下 Centos7.* 系统升级 OpenSSH 到 openssh-8.* 版本的方法。
注意:升级前请务必对系统进行快照备份,以免升级过程中出现异常无法恢复。
下载rpm包(以8.8示例)
wget https://www.02405.com/wp-content/uploads/2022/06/openssh8.8-c7.tar.gz tar -zxvf openssh8.8-c7.tar.gz
安装方法一:
rpm -Uvh *.rpm
安装方法二(此方法会自动处理依赖关系,推荐使用):
yum install ./*.rpm
部分机器使用方法二安装会提示依赖问题,可以使用以下方法:
yum update *.rpm
至此,升级完成,如果之前升级过的,下面的就不用看了,直接新开SSH终端连接即可。
因为 OpenSSH 升级后,/etc/ssh/sshd_config 会还原至默认状态,我们需要进行相应配置:
cd /etc/ssh/ chmod 400 ssh_host_ecdsa_key ssh_host_ed25519_key ssh_host_rsa_key echo "PermitRootLogin yes" >> /etc/ssh/sshd_config echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config systemctl restart sshd
注意:升级后重启SSH可能出现以下错误:
It is required that your private key files are NOT accessible by others. This private key will be ignored. Unable to load host key "/etc/ssh/ssh_host_ed25519_key": bad permissions Unable to load host key: /etc/ssh/ssh_host_ed25519_key sshd: no hostkeys available -- exiting. [FAILED] sshd.service: control process exited, code=exited status=1 Failed to start SYSV: OpenSSH server daemon. Unit sshd.service entered failed state. sshd.service failed.
解决办法:
chmod 0600 /etc/ssh/ssh_host_ed25519_key service sshd restart
即可解决。
注意,/etc/pam.d/sshd 也文件会被覆盖,我们进行还原:
先清空:
>/etc/pam.d/sshd;
再还原:
echo '#%PAM-1.0 auth required pam_sepermit.so auth include password-auth account required pam_nologin.so account include password-auth password include password-auth # pam_selinux.so close should be the first session rule session required pam_selinux.so close session required pam_loginuid.so # pam_selinux.so open should only be followed by sessions to be executed in the user context session required pam_selinux.so open env_params session optional pam_keyinit.so force revoke session include password-auth'>/etc/pam.d/sshd
至此,升级完成,先别关闭终端,直接新开一个终端,连接到服务器测试。
注意:如果新开终端连接的时,root 密码报错,并且已经根据上面后续操作,那可能就是 SElinux 的问题,我们进行临时禁用:
setenforce 0
即可正常登录,然后修改 /etc/selinux/config 文件:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
进行永久禁用SElinux即可。
附:8.5-8.8版本编译好的rpm包文件,你也可以下载后手动上传到服务器安装,安装方法与上面相同。
本文安装方法及rpm包均转载自:https://cikeblog.com/,感谢大佬分享。