一、首先下载需要用到的依赖包
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查看版本,发现已经回退了之前的版本