Linux系统上OpenSSH最简单升级的方法
升级OpenSSH前,最好开启系统上的Telnet服务,通过Telnet连接系统进行升级操作。以防OpenSSH升级出现问题而连接不上系统。
1.备份/etc/ssh目录
# cp -rp /etc/ssh /etc/ssh.bak
2.标题必要软件的安装
# sudo apt-get install gcc zlib zlib-devel openssl-devel
3.查看当前OpenSSH版本
# ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013
可以看到,当前版本是OpenSSH 6.6.1p1版本。我们把它升级到OpenSSH 8.0p1版本。
4.下载OpenSSH新版本
打开https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/网站
选择openssh-8.0p1.tar.gz进行下载
#curl -O https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.0p1.tar.gz
5.安装openssh-8.0p1
# tar -zxvf openssh-8.0p1.tar.gz
# cd openssh-8.0p1
# ./configure
这步要注意,如果报错,就需要先解决报错的问题才能进行下一步。
只要最后出现如图的类似内容,才说明没问题,可以进行下一步编译了。
上一步正常执行后,开始编译安装。
# make
# make install
如果没报错的话,说明升级成功了。
执行ssh -V就能看到OpenSSH的客户端升级成功了。
# ssh -V
OpenSSH_8.0p1, OpenSSL 1.0.2k-fips 26 Jan 2017
上面只能说明OpenSSH的客户端开始使用新版本了,但openssh-server服务端还是在用旧版的。
所以我们还需要修改一下ssh的服务文件,让它开始使用新的版本。
如果前面./configure没指定位置的话,编译后新的sshd服务文件默认是/usr/local/sbin/sshd
我们需要修改sshd的服务文件,指向这个新的sshd文件。
CentOS6和CentOS7系统修改方法不一样。
CentOS6系统:
#vim /etc/rc.d/init.d/sshd
SSHD=/usr/local/sbin/sshd
启用新的sshd后,由于新版本的OpenSSH默认不允许root用户登录,如果需要使用root远程登录,还需要做一下设置。如果不需要,可以直接重启服务。
新的OpenSSH的配置文件是在/usr/local/etc/这个目录下,编辑/usr/local/etc/sshd_config:
# vim /usr/local/etc/sshd_config
PermitRootLogin yes
重启服务
#service sshd restart
CentOS7系统:
禁用原先的SSH服务,并移除服务文件
# systemctl disable sshd
# mv /usr/lib/systemd/system/sshd.service /sshd.service
在OpenSSH_8.0p1源码包中,把一些服务文件复制到系统中:
# cp contrib/redhat/sshd.init /etc/init.d/sshd
# cp contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
# chmod +x /etc/init.d/sshd
修改/etc/init.d/sshd中的SSHD路径:
# vim /etc/init.d/sshd
SSHD=/usr/local/sbin/sshd
启用新的sshd后,由于新版本的OpenSSH默认不允许root用户登录,如果需要使用root远程登录,还需要做一下设置。如果不需要,可以直接重启服务。
新的OpenSSH的配置文件是在/usr/local/etc/这个目录下,编辑/usr/local/etc/sshd_config:
# vim /usr/local/etc/sshd_config
PermitRootLogin yes
重启服务:
# systemctl daemon-reload
# systemctl restart sshd