今年4月份openssh发布了8.6版本
客户的机子上装的centos6,自带的openssh版本也比较低5.3p1,一扫描都是各种漏洞问题
所以准备升级到新的8.6版本
1、由于升级过程ssh会连接不上,需要先开启telnet服务,一定不要忘记!!!!
命令:chkconfig telnet on
开启完试一下能否连上:
具体可参考楼主另一边文章:在linux中开启和关闭telnet服务_hjh872505574的专栏-CSDN博客_centos7关闭telnet服务
2、备份ssh文件,如果升级出问题还可以回滚
#楼主是昨天升级的,所以日期备注的是20210526
[root@bogon .ssh]#cp -r /etc/ssh /etc/ssh20210526
[root@bogon .ssh]#cp -r /etc/pam.d /etc/pam.d20210526
[root@bogon .ssh]#cp -r /etc/init.d/sshd /etc/init.d/sshd20210526
[root@bogon .ssh]#cp /usr/bin/ssh /usr/bin/ssh20210526
3、下载新版的openssh
[root@bogon .ssh]#cd /usr/local/src
[root@bogon .ssh]#wget https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.6p1.tar.gz
4、升级openssh
#查看openssh版本信息以及相关软件
[root@bogon .ssh]# rpm -qa |grep openssh
openssh-clients-5.3p1-123.el6_9.x86_64
openssh-askpass-5.3p1-123.el6_9.x86_64
openssh-5.3p1-123.el6_9.x86_64
openssh-server-5.3p1-123.el6_9.x86_64
#卸载旧版本
[root@bogon .ssh]# rpm -e --nodeps openssh-clients-5.3p1-123.el6_9.x86_64
[root@bogon .ssh]# rpm -e --nodeps openssh-askpass-5.3p1-123.el6_9.x86_64
[root@bogon .ssh]# rpm -e --nodeps openssh-5.3p1-123.el6_9.x86_64
[root@bogon .ssh]# rpm -e --nodeps openssh-server-5.3p1-123.el6_9.x86_64
#创建openssh安装目录
[root@bogon .ssh]#mkdir /usr/local/openssh
#解压openssh
[root@bogon .ssh]#tar -zxvf openssh-8.6p1.tar.gz
#编译和安装
[root@bogon .ssh]#./configure --prefix=/usr/local/openssh/ --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-openssl-includes=/usr --with-privsep-path=/var/lib/sshd
[root@bogon .ssh]#make
[root@bogon .ssh]#make install
20211213补充,换了一台服务器,执行上面的configure命令的时候一直报错
后面改成了:./configure --prefix=/usr/local/openssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/openssl 就可以执行成功了
#等上面结束以后
[root@bogon .ssh]#cp -p contrib/redhat/sshd.init /etc/init.d/sshd
[root@bogon .ssh]#chmod +x /etc/init.d/sshd
[root@bogon .ssh]#chkconfig --add sshd
[root@bogon .ssh]#cp sshd_config /etc/ssh/sshd_config
[root@bogon .ssh]#cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
[root@bogon .ssh]#cp ssh-keygen /usr/bin/
[root@bogon .ssh]#vim /etc/init.d/sshd
#修改以下几行代码,改为openssh的安装目录
SSHD=/usr/sbin/sshd 改为 SSHD=/usr/local/openssh/sbin/sshd
/usr/sbin/ssh-keygen -A 改为 /usr/local/openssh/bin/ssh-keygen -A
$SSHD $OPTIONS && success || failure 这一行的上面加上:OPTIONS="-f /etc/ssh/sshd_config"
[root@bogon .ssh]#vim /etc/ssh/sshd_config
#在底部加上以下两行:
PasswordAuthentication yes
PermitRootLogin yes
#执行以下两个命令:提示是否覆盖按“y”,后面直接回车就好
[root@bogon .ssh]#ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
[root@bogon .ssh]#ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
#修改权限
[root@bogon .ssh]#chmod 600 /etc/ssh/ssh_host_ecdsa_key
[root@bogon .ssh]#chmod 600 /etc/ssh/ssh_host_rsa_key
#启动sshd
[root@bogon .ssh]#tservice sshd start
#查看ssh版本,证明版本升级成功
5、遇到的问题
5.1、由于host key已经变了,之前其他服务器已经连接过本级的就会没有连接
提示:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
具体信息如下:
ssh会把你每个你访问过的服务器的公钥(public key)都记录在/root/.ssh/known_hosts,当下次访问相同服务器时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告,避免你受到DNS Hijack之类的攻击
直接编辑/root/.ssh/known_hosts,将需要连接的那个IP相关rsa信息删除即可,再次连接成功的话,它会将内容继续写入到known_hosts中
备注:是删除当前客户端的IP相关信息,不是需要远程的那一台(如上面的27服务器)
5.2、本地SecureCRT连接升级后的服务器会弹出一个窗口
解决方法:把password这个选项放到第一行就没问题了
6、升级完记得关闭telnet
[root@bogon .ssh]#chkconfig telnet off
7、升级的过程楼主参考了该博主的博客,链接:Centos7 OpenSSH6.6p1升级到OpenSSH8.6p1【图文】_hzy_709862479_51CTO博客
目前升级完暂时都正常可用,如果大家升级过程中有遇到其他问题,欢迎探讨