- 前言
- 一、准备工作
- 二、安装telnet远程支持
- 1.关掉防火墙。
- 2.安装telnet
- 2.准备OpenSSH与OpenSSL文件
- 3.升级正式开始
- 总结
前言
最近,客户的机房进行等级保护,对我们的服务器进行漏洞扫描,原来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.gz3.升级正式开始
#安装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到本地存起来先,因为操作的过程中,有可能会出现误删或者其他操作而导致的系统远法启动,这些是最可怕的,如果出现,最后的办法就是重装了,再恢复数据。



