在线源码升级OpenSSH版本

2023-03-13 15:55:11 浏览数 (2)

  • 记一次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服务请根据自己的情况处理,保留或者关闭。
    • 作者为测试环境操作,生产环境也可参照此方案,但要谨慎操作。
    • 如有任何问题或疑问可在下方留言告知。

0 人点赞