1.环境说明
本文档测试环境说明如下:
操作系统版本:CentOS Linux release 7.9.2009 (Core)
内核版本:3.10.0-1160.25.1.el7.x86_64
openssh当前版本:OpenSSH_7.4p1
openssh升级版本:openssh-8.8p1
openssl当前版本:OpenSSL 1.0.2k-fips
openssl升级版本:openssl-1.1.1m
2.升级前准备
2.1.安装依赖库
[root@node-100 ~]# yum -y install gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel

2.2.安装telnet
2.2.1.安装telnet-server
[root@node-100 ~]# yum -y install xinetd telnet-server

2.2.2.配置telnet
先看一下xinetd.d目录下是否有telnet文件
[root@node-100 ~]# ll /etc/xinetd.d/telnet
如果有,则将文件里面的disable = no改成disable = yes
如果没有,就进行下面的操作
[root@node-100 ~]# cat > /etc/xinetd.d/telnet <
{
disable = yes
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}
EOF

2.2.3.配置telnet登录终端类型
[root@node-100 ~]# cat >> /etc/securetty <
pts/1
pts/2
pts/3
pts/4
pts/5
EOF

2.2.4.启动telnet服务
[root@node-100 ~]# systemctl enable xinetd —now
[root@node-100 ~]# systemctl enable telnet.socket —now
Created symlink from /etc/systemd/system/sockets.target.wants/telnet.socket to /usr/lib/systemd/system/telnet.socket.
[root@node-100 ~]# ss -nltp | grep 23
LISTEN 0 128 [::]:23 [::]: users:((“systemd”,pid=1,fd=43))
23端口起来了,表示telnet服务正常运行
3.软件下载
openssl官网:https://www.openssl.org/
openssh官网:http://www.openssh.com/
可通过官网查询你需要升级的版本,先下载,也可通过以下命令直接下载到服务器上。
[root@node-100 sshsoft]# wget https://www.openssl.org/source/openssl-1.1.1m.tar.gz —no-check-certificate

[root@node-100 sshsoft]# wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.8p1.tar.gz

解压压缩包
[root@node-100 sshsoft]# tar zxvf openssl-1.1.1m.tar.gz
[root@node-100 sshsoft]# tar zxvf openssh-8.8p1.tar.gz


4.切换为telnet登录linux
以下操作都是在windows环境下以telnet链接的方式下进行,避免ssh中断导致升级失败,以telnet方式登录的时候,注意选择协议和端口,协议为telnet,端口为23


5.opensl升级
5.1.备份
[root@node-100 ~]# mv /usr/bin/openssl{,.bak}
[root@node-100 ~]# mv /usr/include/openssl{,.bak}

5.2.编译安装
[root@node-100 ~]# ./config shared && make && make install

编译完成后,可以在/usr/local目录下找到openssl的二进制文件和目录
[root@node-100 openssl-1.1.1m]# ll /usr/local/bin/openssl [root@node-100 openssl-1.1.1m]# ll -d /usr/local/include/openssl/

5.3.配置
建立软连接
[root@node-100 openssl-1.1.1m]# ln -s /usr/local/bin/openssl /usr/bin/openssl
[root@node-100 openssl-1.1.1m]#ln -s /usr/local/include/openssl/ /usr/include/openssl [root@node-100 openssl-1.1.1m]# ll /usr/bin/openssl
[root@node-100 openssl-1.1.1m]# ll -d /usr/include/openssl

重新加载配置
[root@node-100 openssl-1.1.1m]# echo “/usr/local/lib64” >> /etc/ld.so.conf
[root@node-100 openssl-1.1.1m]# /sbin/ldconfig
可能会有的一些报错和解决方法
[root@localhost ~]# openssl version
openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
这是因为libssl.so.1.1文件找不到,执行
find / -name ‘libssl.so.1.1’
将/etc/ld.so.conf里面的lib64改成find出来的路径即可
[root@localhost ~]# find / -name “openssl”
编译完,可以用上面的find命令看一下openssl所在的路径,以及include/openssl所在的路径
5.4.验证openssl
[root@node-100 openssl-1.1.1m]# openssl version
6.openssh升级
6.1.备份
[root@node-100 ~]# mv /etc/ssh{,.bak}
[root@node-100 ~]# mkdir /usr/local/openssh

6.2.编译安装
[root@node-100 openssh-8.8p1]# ./configure —prefix=/usr/local/openssh —sysconfdir=/etc/ssh —with-openssl-includes=/usr/local/include —with-ssl-dir=/usr/local/lib64 —with-zlib —with -md5-passwords —with-pam && make && make install


6.3.配置
配置sshd_config文件
[root@node-100 openssh-8.8p1]# echo “UseDNS no” >> /etc/ssh/sshd_config
[root@node-100 openssh-8.8p1]# echo ‘PermitRootLogin yes’ >> /etc/ssh/sshd_config
[root@node-100 openssh-8.8p1]# echo ‘PubkeyAuthentication yes’ >> /etc/ssh/sshd_config
[root@node-100 openssh-8.8p1]# echo ‘PasswordAuthentication yes’ >> /etc/ssh/sshd_config

创建新的sshd二进制文件
[root@node-100 openssh-8.8p1]# mv /usr/sbin/sshd{,.bak}
[root@node-100 openssh-8.8p1]# mv /usr/bin/ssh{,.bak}
[root@node-100 openssh-8.8p1]# mv /usr/bin/ssh-keygen{,.bak} [root@node-100 openssh-8.8p1]# ln -s /usr/local/openssh/bin/ssh /usr/bin/ssh
[root@node-100 openssh-8.8p1]# ln -s /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
[root@node-100 openssh-8.8p1]# ln -s /usr/local/openssh/sbin/sshd /usr/sbin/sshd

6.4.重启openssh服务
[root@node-100 openssh-8.8p1]# systemctl disable sshd —now [root@node-100 openssh-8.8p1]# mv /usr/lib/systemd/system/sshd.service{,.bak}
[root@node-100 openssh-8.8p1]# systemctl daemon-reload
[root@node-100 openssh-8.8p1]# cp -a /tmp/sshsoft/openssh-8.8p1/contrib/redhat/sshd.init /etc/init.d/sshd
[root@node-100 openssh-8.8p1]# cp -a /tmp/sshsoft/openssh-8.8p1/contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
[root@node-100 openssh-8.8p1]# chkconfig —add sshd
[root@node-100 openssh-8.8p1]# systemctl enable sshd —now
[root@node-100 openssh-8.8p1]# systemctl restart sshd

6.5.验证openssh
[root@node-100 openssh-8.8p1]# ssh -V
7.升级完成验证
通过终端重新登录服务器验证
[root@node-100 ~]# ssh -V

8.关闭telnet服务
[root@node-100 ~]# systemctl disable xinetd.service —now
[root@node-100 ~]# systemctl disable telnet.socket —now

*9.升级脚本
注意:
升级脚本不安装telnet服务,仅在对服务器进行了快照情况下进行,以免升级失败,导致无法连接服务器
