1.环境说明
    本文档测试环境说明如下:
    操作系统版本:CentOS Linux release 7.9.2009 (Core)
    image.png
    内核版本:3.10.0-1160.25.1.el7.x86_64
    wps5425.tmp.jpeg
    openssh当前版本:OpenSSH_7.4p1
    wps5426.tmp.jpeg
    openssh升级版本:openssh-8.8p1
    openssl当前版本:OpenSSL 1.0.2k-fips
    wps5427.tmp.jpeg
    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
    wps5428.tmp.jpeg
    wps5429.tmp.jpeg
    2.2.安装telnet
    2.2.1.安装telnet-server
    [root@node-100 ~]# yum -y install xinetd telnet-server
    wps542a.tmp.jpeg
    wps542b.tmp.jpeg
    2.2.2.配置telnet
    先看一下xinetd.d目录下是否有telnet文件
    [root@node-100 ~]# ll /etc/xinetd.d/telnet
    wps542c.tmp.jpeg
    如果有,则将文件里面的disable = no改成disable = yes
    如果没有,就进行下面的操作
    [root@node-100 ~]# cat > /etc/xinetd.d/telnet <service telnet
    {
    disable = yes
    flags = REUSE
    socket_type = stream
    wait = no
    user = root
    server = /usr/sbin/in.telnetd
    log_on_failure += USERID
    }
    EOF
    wps542d.tmp.jpeg
    2.2.3.配置telnet登录终端类型
    [root@node-100 ~]# cat >> /etc/securetty <pts/0
    pts/1
    pts/2
    pts/3
    pts/4
    pts/5
    EOF
    wps542e.tmp.jpeg
    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))
    wps542f.tmp.jpeg
    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
    wps5430.tmp.jpeg
    [root@node-100 sshsoft]# wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.8p1.tar.gz
    wps5431.tmp.jpeg
    解压压缩包
    [root@node-100 sshsoft]# tar zxvf openssl-1.1.1m.tar.gz
    wps5434.tmp.jpeg
    [root@node-100 sshsoft]# tar zxvf openssh-8.8p1.tar.gz
    wps5435.tmp.jpeg
    wps5436.tmp.jpeg
    4.切换为telnet登录linux
    以下操作都是在windows环境下以telnet链接的方式下进行,避免ssh中断导致升级失败,以telnet方式登录的时候,注意选择协议和端口,协议为telnet,端口为23
    wps5437.tmp.jpeg
    wps5438.tmp.jpeg
    5.opensl升级
    5.1.备份
    [root@node-100 ~]# mv /usr/bin/openssl{,.bak}
    [root@node-100 ~]# mv /usr/include/openssl{,.bak}
    wps5439.tmp.jpeg
    5.2.编译安装
    [root@node-100 ~]# ./config shared && make && make install
    wps543a.tmp.jpeg
    编译完成后,可以在/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/
    wps543b.tmp.jpeg
    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
    wps544c.tmp.jpeg
    重新加载配置
    [root@node-100 openssl-1.1.1m]# echo “/usr/local/lib64” >> /etc/ld.so.conf
    [root@node-100 openssl-1.1.1m]# /sbin/ldconfig
    wps544d.tmp.jpeg
    可能会有的一些报错和解决方法
    [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
    wps544e.tmp.jpeg
    6.openssh升级
    6.1.备份
    [root@node-100 ~]# mv /etc/ssh{,.bak}
    [root@node-100 ~]# mkdir /usr/local/openssh
    wps544f.tmp.jpeg
    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
    wps5450.tmp.jpeg
    wps5451.tmp.jpeg
    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
    wps5452.tmp.jpeg
    创建新的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
    wps5453.tmp.jpeg
    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
    wps5454.tmp.jpeg
    6.5.验证openssh
    [root@node-100 openssh-8.8p1]# ssh -V

    7.升级完成验证
    通过终端重新登录服务器验证
    [root@node-100 ~]# ssh -V
    wps5456.tmp.jpeg
    8.关闭telnet服务
    [root@node-100 ~]# systemctl disable xinetd.service —now
    [root@node-100 ~]# systemctl disable telnet.socket —now
    wps5457.tmp.jpeg
    *9.升级脚本

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