Centos7.9 升级OpenSSH 9.0


前言

最近,客户的机房进行等级保护,对我们的服务器进行漏洞扫描,原来openssh7.4版本被扫出存在高风险,必须升级打补丁,根据出具的报告,需要将openssh升级至8.4以上版本。
由于客户机房采用的是VPN+保垒机方式,更加恶心的是,VPN上了之后会被屏避掉所以外部网络,所以只有文件升级。其中由于不小心删除了openssl-libs相关的包,导致ssh远程一度无法进行访问,无法传输文件。后面经过系统上传功能将相应的so文件上传,然后转到对应的文件目录下才得以解决。在这里记录一下,希望对需要升级OpenSSH的同行们有帮助


一、准备工作

经过查找资料,本次升级需要用到的安装包有:
zlib-1.2.11.tar.gz ===》 https://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.gz
openssl-1.1.1d.tar.gz ===》https://www.openssl.org/source/openssl-1.1.1d.tar.gz
openssh-9.0p1.tar.gz ===》https://mirrors.sonic.net/pub/OpenBSD/OpenSSH/portable/openssh-9.0p1.tar.gz

如果服务器上能使用wget,那就简单很多。
wget --no-check-certificate https://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.gz
wget --no-check-certificate https://www.openssl.org/source/openssl-1.1.1d.tar.gz
wget --no-check-certificate https://mirrors.sonic.net/pub/OpenBSD/OpenSSH/portable/openssh-9.0p1.tar.gz

安装支持:

yum -y install wget tar gcc make perl

二、安装telnet远程支持

提示:这步最好是做,那怕用不上,但不能没有,我的升级好在做了这一步,不然就得现场去操作或者请网管协助处理
安装telnet远程支持,主要是在无法ssh远程后,还可以使用telnet进行指令操作,由于我删掉了openssl-libs后所有的网络访问都缺少了两个包:libssl.so.10,libcrypto.so.10,所以旧版本的ssh恢复后,仍无法启动,这是这次碰到的最头痛的问题,浪费了近一天时间。

后面在虚拟机重新安装,发现不装telnet也没有问题,个人建议还是装了,最主要是保险。

1.关掉防火墙。

关掉防火墙:

systemctl stop firewalld

提示:不关掉防火墙,那就得把tcp/23端口开了

2.安装telnet

#检查是否安装telnet
[root@192 ~]# rpm -qa | grep telnet
[root@192 ~]# rpm -qa | grep xinetd

#查出来是空的,没有安装,进行安装
[root@192 ~]# yum -y install telnet*
[root@192 ~]# yum -y install xinetd

#设置开机启动
[root@192 ~]# systemctl enable xinetd.service
[root@192 ~]# systemctl enable telnet.socket

#启动telnet服务
[root@192 ~]# systemctl start telnet.socket
[root@192 ~]# systemctl start xinetd

#修改配置,让root用户能登录
[root@192 ~]# vi /etc/securetty
#在最后面加上下面两行
pts/0
pts/1
#保存

#重新启动xinetd
[root@192 ~]# systemctl restart xinetd
 
#确认一下是否启动成功
[root@192 ~]# netstat -plnt | grep 23
tcp6       0      0 :::23                   :::*                    LISTEN      1/systemd
#这样表示启动成功了。

提示:可以使用xshell通过telnet的方式进行远程,如能连上再往下操作。

2.准备OpenSSH与OpenSSL文件

如果可以使用wget的方式,则通过wget进行下载,不行的话,本地下载后,再通过sftp上传致服务器。

通过wget方式进行下载:(登录后我一般会将文件下载到 ~/ 文件夹下)

[root@192 ~]# wget --no-check-certificate https://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.gz
[root@192 ~]# wget --no-check-certificate https://www.openssl.org/source/openssl-1.1.1d.tar.gz
[root@192 ~]# wget --no-check-certificate https://mirrors.sonic.net/pub/OpenBSD/OpenSSH/portable/openssh-9.0p1.tar.gz

#解压
[root@192 ~]# tar -xzvf zlib-1.2.11.tar.gz 
[root@192 ~]# tar -xzvf openssl-1.1.1d.tar.gz 
[root@192 ~]# tar -xzvf openssh-9.0p1.tar.gz 

3.升级正式开始

#安装zlib
[root@192 ~]# cd zlib-1.2.11
[root@192 zlib-1.2.11]# ./configure --prefix=/usr/local/zlib
[root@192 openssl-1.1.1d]# make && make install

#先安装openssl 注意,我这里没有复盖原来自带的openssl
[root@192 ~]# cd openssl-1.1.1d
[root@192 openssl-1.1.1d]# ./config --prefix=/usr/local/ssl -d shared
[root@192 openssl-1.1.1d]# make && make install
[root@192 openssl-1.1.1d]# echo '/usr/local/ssl/lib' >> /etc/ld.so.conf
[root@192 openssl-1.1.1d]# ldconfig -v

提示:到这里,openssl已安装完成,会现在系统里的 openssl version 与刚刚装的这个不同,有些会担心后面会执行不成功,我就是这样,来到这步,我怕后面执行不成功,所以我对原来的进行删除,才有我前面说的不小心删除了openssl-libs包的问题,这里不要管,让两个共存即可。

#继续安装openssh
[root@192 openssl-1.1.1d]# cd ..
[root@192 ~]# cd openssh-9.0p1
[root@192 openssh-9.0p1]# ./configure --prefix=/usr/local/openssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/ssl
[root@192 openssl-1.1.1d]# make && make install

卸载yum安装的openssh

[root@192 openssh-9.0p1]# yum remove openssh

提示:这个时候,千万不要退出当前的ssh远程,如果退出了,就得用telnet来进行远程了

配置新的SSH

[root@192 openssh-9.0p1]# vi /usr/local/openssh/etc/sshd_config
#修改里面几个配置
PermitRootLogin yes
PubkeyAuthentication yes
PasswordAuthentication yes
#保存

#复制相应的文件
[root@192 openssh-9.0p1]# cd contrib/redhat/
[root@192 redhat]# pwd
/root/openssh-9.0p1/contrib/redhat
[root@192 redhat]# cp sshd.init  /etc/init.d/sshd
[root@192 redhat]# chkconfig --add sshd
[root@192 redhat]# cp /usr/local/openssh/etc/sshd_config /etc/ssh/sshd_config
[root@192 redhat]# cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
[root@192 redhat]# cp /usr/local/openssh/bin/ssh /usr/bin/ssh
[root@192 redhat]# cp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
[root@192 redhat]# cp /usr/local/openssh/etc/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub
cp:是否覆盖"/etc/ssh/ssh_host_ecdsa_key.pub"? y
[root@192 redhat]# 

到这步,基本就完成了,恭喜你!不过还没结束,继续往下看

#启动sshd,没报错,即成功了
[root@192 redhat]# systemctl start sshd.service

#配置开机启动
[root@192 redhat]# systemctl enable sshd

#查看ssh版本
[root@192 redhat]# ssh -V
OpenSSH_9.0p1, OpenSSL 1.1.1d  10 Sep 2019
#9.0,完成了

试一下ssh远程连接是否成功,能连,没问题。

不过还有一件事,不要忘记了,关掉telnet

#关掉开机启动
[root@192 ~]# systemctl disable xinetd.service
[root@192 ~]# systemctl disable telnet.socket

##关掉telnet
[root@192 ~]# systemctl stop telnet.socket
[root@192 ~]# systemctl stop xinetd

#启动防火墙 或 关掉 tcp/23端口
[root@192 ~]# systemctl start firewalld

收工


总结

升级时,需要先安装Zlib,OpenSSL。在编译过程中,注意看最后的编译报告,如果有缺包的,会有提示,通过yum进行安装即可,如果不支持yum,那就到对应的官网进行下载。

在升级前,最好是用虚拟机,安装与服务器相同版本的系统,摸拟没问题再进行操作。

如果是云服务器,最好在操作前进行快照备份。

升级的一切准则,备份你的业务系统数据库,业务系统文件,copy到本地存起来先,因为操作的过程中,有可能会出现误删或者其他操作而导致的系统远法启动,这些是最可怕的,如果出现,最后的办法就是重装了,再恢复数据。

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值