一、首先下载需要用到的依赖包

yum -y install zlib* 
yum -y install pam-*
yum -y install gcc
yum -y install openssl-devel

二、开启telnet服务(防止shh升级时出现问题无法远程连接)

yum -y install telnet*
systemctl enable telnet.socket
systemctl start telnet.socket

#将安全文件关闭或者修改(否则root无法telnet登录)
mv /etc/securetty /etc/securetty.bak

在securetty文件的末尾加上pts/0 pts/1的方法开启root登录

#注有防火墙的话需要放开23端口

三、备份原有ssh服务版本

mv /etc/ssh /etc/ssh.bak
mv /usr/bin/ssh /usr/bin/ssh.bak
mv /usr/sbin/sshd /usr/sbin/sshd.bak

四、安装openssh

tar -zxvf openssh-8.6p1.tar.gz #解压
cd /root/openssh-8.6p1/
yum -y remove openssh #卸载旧版本

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --with-md5-passwords --with-ssl-dir=/usr/local/ssl/ --with-pam

make && make install
/usr/sbin/sshd -t -f /etc/ssh/sshd_config

cp /usr/sbin/sshd /usr/local/sbin/sshd

cp /usr/bin/ssh /usr/local/bin/ssh

echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config

sed -i -e 's/#UsePAM/UsePAM/' -e '/UsePAM/{s/no/yes/}' /etc/ssh/sshd_config

sed 's@d/login@d/sshd@g' /etc/pam.d/login > /etc/pam.d/sshd

cp /root/openssh-8.6p1/contrib/redhat/sshd.init /etc/init.d/sshd

/usr/sbin/sshd

echo "session    required     pam_limits.so" >>/etc/pam.d/login

echo "session    required     pam_limits.so" >>/etc/pam.d/sshd

chkconfig --add sshd

service sshd restart/systemctl restart sshd

echo  '/usr/sbin/sshd' >> /etc/rc.d/rc.local && chmod a+x /etc/rc.d/rc.local

最后使用命令ssh -V查看ssh版本,发现已完成ssh版本升级。

五、版本回退

如果发现升级出现了问题,可以回退到备份的上一版本

mv /etc/ssh.bak/ /etc/ssh
mv /usr/bin/ssh.bak /usr/bin/ssh
mv /usr/sbin/sshd.bak /usr/sbin/sshd
mkdir /var/empty/sshd && chown root:root /var/empty/sshd (没有这个目录或属主不是root启动会报错)
systemctl restart sshd

使用ssh -V查看版本,发现已经回退了之前的版本