0%

Centos 7升级OpenSSH版本

下载最新版源码包

下载地址: https://www.openssh.com/releasenotes.html

备份旧版SSH

1
2
mv /usr/sbin/sshd /usr/sbin/sshd.old
mv /usr/bin/ssh /usr/bin/ssh.old

如果旧版本是源码安装的OpenSSH,建议备份整个openssh目录:

1
mv /usr/local/openssh  /usr/local/openssh.old

安装依赖

1
yum -y install zlib-devel openssl-devel gcc

解压安装

1
2
3
4
5
tar -zxvf openssh-8.8p1.tar.gz
cd openssh-8.8p1
./configure --prefix=/usr/local/openssh
make
make install

替换密钥文件

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
2
ln -s /usr/local/openssh/sbin/sshd  /usr/sbin/
ln -s /usr/local/openssh/bin/ssh /usr/bin/

3)systemctl restart sshd

重启失败解决办法:
如果出现启动超时的现象,如图:

安照以下步骤解决:

  1. 移除 sshd.service 文件
1
mv  /lib/systemd/system/sshd.service  /lib/systemd/system/ssh.service.bak
  1. 从openssh源码包中复制一个 sshd 启动脚本
1
cp  openssh-8.6p1/contrib/redhat/sshd.init  /etc/init.d/sshd
  1. 修改权限
1
chmod  755  /etc/init.d/sshd
  1. 添加自启动
1
2
chkconfig  --add  sshd
chkconfig sshd on
  1. 重启sshd
1
2
systemctl  daemon-reexec
systemctl restart sshd