下载最新版源码包
下载地址: https://www.openssh.com/releasenotes.html
备份旧版SSH
1 | mv /usr/sbin/sshd /usr/sbin/sshd.old |
如果旧版本是源码安装的OpenSSH,建议备份整个openssh目录:
1 | mv /usr/local/openssh /usr/local/openssh.old |
安装依赖
1 | yum -y install zlib-devel openssl-devel gcc |
解压安装
1 | tar -zxvf openssh-8.8p1.tar.gz |
替换密钥文件
1)备份密钥:cp -r /usr/local/openssh/etc /usr/local/openssh/etc.bak
2)替换为旧版SSH密钥:cp /etc/ssh/ssh_host_* /usr/local/openssh/etc
验证是否安装成功
1)修改配置文件:vi /usr/local/openssh/etc/sshd_config
将 Port 改为222
#PermitRootLogin prohibit-password 改为 PermitRootLogin yes
2)启动新版ssh:/usr/local/openssh/sbin/sshd
如图,启动成功
3)从其他服务器上测试远程连接:ssh IP -p 222
如果正常连接则表示安装成功
如果连接失败,请检查是否被防火墙拦截
1 | systemctl status firewalld |
如果开启了防火墙,将其关闭即可
1 | systemctl stop firewalld |
重启ssh服务
1)恢复配置文件:vi /usr/local/openssh/etc/sshd_config
将 Port 改回22
2)创建新版ssh软连接
1 | ln -s /usr/local/openssh/sbin/sshd /usr/sbin/ |
3)systemctl restart sshd
重启失败解决办法:
如果出现启动超时的现象,如图:
安照以下步骤解决:
- 移除 sshd.service 文件
1 | mv /lib/systemd/system/sshd.service /lib/systemd/system/ssh.service.bak |
- 从openssh源码包中复制一个 sshd 启动脚本
1 | cp openssh-8.6p1/contrib/redhat/sshd.init /etc/init.d/sshd |
- 修改权限
1 | chmod 755 /etc/init.d/sshd |
- 添加自启动
1 | chkconfig --add sshd |
- 重启sshd
1 | systemctl daemon-reexec |