- 记一次openssh低版本漏洞修复过程,升级openssh版本至最新
- 环境:
- 系统版本:CentOS 7.6.1801(ip:192.168.110.113)
- 原ssh版本:OpenSSH_7.4p1
- 新ssh版本:OpenSSH-8.2p1
- 安装方式:源码编译安装
- 源码包位置:提前将源码包上传至/usr/local/src/
- 源码下载地址:https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/
1.启用telnet服务
代码语言:javascript
复制#这里一定要启用telnet服务,以免ssh升级失败无法远程系统
#检查是否已经安装了telnet-server和xinetd服务,如果没有则安装之,否则跳过
[root@test ~]$ rpm -qa telnet-server xinetd
[root@test ~]$
#没有安装,我们安装一下
[root@test ~]$ yum install telnet-server xinetd
2.启动服务并设置为开机自启动
代码语言:javascript
复制[root@test ~]$ systemctl start telnet.socket
[root@test ~]$ systemctl start xinetd
[root@test ~]$ systemctl enable telnet.socket
[root@test ~]$ systemctl enable xinetd
#telnet安装完成,此时通过telnet登陆系统会报密码错误从而无法登陆,解决方案如下
3.解决密码错误
代码语言:javascript
复制[root@test ~]$ vim /etc/pam.d/remote
auth required pam_securetty.so
#将上面这一行注释掉即可,注释后如下:
#auth required pam_securetty.so
[root@test ~]$ systemctl restart telnet.socket #重启telnet服务
4.测试telnet登陆
代码语言:javascript
复制[root@mylinux]$ telnet 192.168.110.113
Kernel 3.10.0-957.21.3.el7.x86_64 on an x86_64
test login: root
Password:
Last login: Thu Jul 9 17:44:10 from 10.100.7.210
[root@test ~]$
#登陆成功,接下来开始升级openssh
5.安装依赖环境
代码语言:javascript
复制[root@test ~]$ yum install openssl*
[root@test ~]$ yum install zlib*
[root@test ~]$ yum install gcc
6.备份ssh目录
代码语言:javascript
复制[root@test ~]$ cp -frp /etc/ssh/ /home/ssh_bak
[root@test ~]$ ll /home/ssh_bak/
total 604
-rw-r--r-- 1 root root 581843 Apr 11 2018 moduli
-rw-r--r-- 1 root root 2276 Apr 11 2018 ssh_config
-rw------- 1 root root 3907 Apr 11 2018 sshd_config
-rw-r----- 1 root ssh_keys 227 Feb 27 2018 ssh_host_ecdsa_key
-rw-r--r-- 1 root root 162 Feb 27 2018 ssh_host_ecdsa_key.pub
-rw-r----- 1 root ssh_keys 387 Feb 27 2018 ssh_host_ed25519_key
-rw-r--r-- 1 root root 82 Feb 27 2018 ssh_host_ed25519_key.pub
-rw-r----- 1 root ssh_keys 1675 Feb 27 2018 ssh_host_rsa_key
-rw-r--r-- 1 root root 382 Feb 27 2018 ssh_host_rsa_key.pub
7.停止ssh服务并删除/etc/ssh 目录
代码语言:javascript
复制#这里注意,千万不要断开ssh连接
[root@test ~]$ systemctl stop sshd
[root@test ~]$ rm -rf /etc/ssh/
8.解压、编译、安装
代码语言:javascript
复制[root@test ~]$ cd /usr/local/src/ #进入源码包所在目录
[root@test src]$ tar zxvf openssh-8.2p1.tar.gz #解压
[root@test src]$ cd openssh-8.2p1 #进入解压后的目录
[root@test openssh-8.2p1]$ ./configure --prefix=/usr --sysconfdir=/etc/ssh #配置相关信息,等待配置完成,需要一点时间
[root@test openssh-8.2p1]$ make #开始编译,等待编译结束,需要一点时间
[root@test openssh-8.2p1]$ make install #开始安装
9.修改权限
代码语言:javascript
复制[root@test ~]$ chmod 0600 /etc/ssh/ssh_host_rsa_key
[root@test ~]$ chmod 0600 /etc/ssh/ssh_host_ecdsa_key
[root@test ~]$ chmod 0600 /etc/ssh/ssh_host_ed25519_key
10.拷贝启动文件,有提示覆盖即可
代码语言:javascript
复制[root@test ~]$ cp /usr/local/src/openssh-8.2p1/contrib/redhat/sshd.init /etc/init.d/sshd
11.修改sshd配置文件
代码语言:javascript
复制[root@test ~]$ vim /etc/ssh/sshd_config
PermitRootLogin yes #改为yes允许root登陆
PasswordAuthentication yes #改为yes允许密码验证
[root@test ~]$ systemctl daemon-reload #重新加载服务配置文件
[root@test ~]$ systemctl start sshd #启动sshd服务
[root@test ~]$ systemctl enable sshd#开机自启动
12.测试ssh连接
代码语言:javascript
复制#保持当前ssh连接窗口不要关闭,重新开启一个ssh窗口
[root@mylinux]$ ssh root@192.168.110.113
root@192.168.110.113's password:
Last login: Thu Jul 9 19:09:16 2020 from 10.100.7.210
[root@test ~]$ ip addr | grep eth0 | grep inet
inet 192.168.110.113/24 brd 192.168.110.255 scope global noprefixroute eth0
#可见登陆成功
13.查看当前ssh版本
代码语言:javascript
复制[root@test ~]$ ssh -V
OpenSSH_8.2p1, OpenSSL 1.0.2k-fips 26 Jan 2017
#版本为8.2,升级成功
- 结束
- telnet 和 xinetd服务请根据自己的情况处理,保留或者关闭。
- 作者为测试环境操作,生产环境也可参照此方案,但要谨慎操作。
- 如有任何问题或疑问可在下方留言告知。