Centos7.9 升级OpenSSH 9.0
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到本地存起来先,因为操作的过程中,有可能会出现误删或者其他操作而导致的系统远法启动,这些是最可怕的,如果出现,最后的办法就是重装了,再恢复数据。
共有 0 条评论