Centos7_OpenSSH离线升级8.6和OpenSSL1.0.2u

时间:2021-07-06 19:56:32   收藏:0   阅读:34

@

说明

环境说明

目的及验证

[root@test ~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core)
[root@test ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
[root@test ~]# sshd -V
unknown option -- V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
usage: sshd [-46DdeiqTt] [-C connection_spec] [-c host_cert_file]
            [-E log_file] [-f config_file] [-g login_grace_time]
            [-h host_key_file] [-o option] [-p port] [-u len]
[root@test ~]# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

配置本地源

配置telnet【可以不做】

安装依赖包

 [root@test ~]# yum install  -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel  pam-devel
 更新完毕:
  glibc.x86_64 0:2.17-324.el7_9         make.x86_64 1:3.82-24.el7         openssl.x86_64 1:1.0.2k-21.el7_9        

作为依赖被升级:
  e2fsprogs.x86_64 0:1.42.9-19.el7      e2fsprogs-libs.x86_64 0:1.42.9-19.el7 glibc-common.x86_64 0:2.17-324.el7_9
  krb5-libs.x86_64 0:1.15.1-50.el7      libcom_err.x86_64 0:1.42.9-19.el7     libgcc.x86_64 0:4.8.5-44.el7        
  libgomp.x86_64 0:4.8.5-44.el7         libss.x86_64 0:1.42.9-19.el7          libstdc++.x86_64 0:4.8.5-44.el7     
  openssl-libs.x86_64 1:1.0.2k-21.el7_9 pam.x86_64 0:1.1.8-23.el7             pcre.x86_64 0:8.32-17.el7           
  zlib.x86_64 0:1.2.7-19.el7_9   
  
  [root@test ~]# yum install  -y pam* zlib*
  已安装:
  pam_krb5.x86_64 0:2.4.8-6.el7               pam_pkcs11.x86_64 0:0.6.2-30.el7    pam_snapper.x86_64 0:0.2.8-4.el7
  pam_ssh_agent_auth.x86_64 0:0.10.3-2.21.el7 zlib-static.x86_64 0:1.2.7-19.el7_9
  
作为依赖被安装:
  boost-serialization.x86_64 0:1.53.0-28.el7                   boost-system.x86_64 0:1.53.0-28.el7                  
  boost-thread.x86_64 0:1.53.0-28.el7                          pcsc-lite-libs.x86_64 0:1.8.8-8.el7                  
  snapper.x86_64 0:0.2.8-4.el7                                 snapper-libs.x86_64 0:0.2.8-4.el7                    

完毕!

准备openssh包和openssl的包

我本人是下载的:openssl-1.0.2u.tar 和 openssh-8.6p1.tar最新的包

将openssl和openssh包上传到服务器

[root@test ~]# ll
总用量 6984
-rw-------. 1 root root    1253 10月 22 2020 anaconda-ks.cfg
-rw-r--r--. 1 root root 1786328 6月  25 18:13 openssh-8.6p1.tar.gz
-rw-r--r--. 1 root root 5355412 6月  25 18:13 openssl-1.0.2u.tar.gz


开始安装openssl

升级前版本查看

[root@test ~]# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

文件备份

[root@test ~]# ll /usr/bin/openssl 
-rwxr-xr-x. 1 root root 555288 12月 17 2020 /usr/bin/openssl
[root@test ~]# mv /usr/bin/openssl /usr/bin/openssl_bak
[root@test ~]# ll /usr/include/openssl
总用量 1864
-rw-r--r--. 1 root root   6146 12月 17 2020 aes.h
...
[root@test ~]# mv /usr/include/openssl /usr/include/openssl_bak

解压tar包

[root@test ~]# ls
anaconda-ks.cfg  openssh-8.6p1.tar.gz  openssl-1.0.2u.tar.gz
[root@test ~]# tar xfz openssl-1.0.2u.tar.gz 
[root@test ~]# ll
总用量 6988
-rw-------.  1 root root    1253 10月 22 2020 anaconda-ks.cfg
-rw-r--r--.  1 root root 1786328 6月  25 18:13 openssh-8.6p1.tar.gz
drwxr-xr-x. 20 root root    4096 6月  25 18:42 openssl-1.0.2u
-rw-r--r--.  1 root root 5355412 6月  25 18:13 openssl-1.0.2u.tar.gz

编译安装新版本的openssl

 [root@test ~]# cd openssl-1.0.2u/
 [root@test openssl-1.0.2u]# ./config shared && make && make install  
 ...等待编译...

成功界面如下:

[root@test openssl-1.0.2u]# echo $?
0

目录做软链接

下面2个文件或者目录做软链接 【刚才前面的步骤mv备份过原来的】

[root@test openssl-1.0.2u]# ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
[root@test openssl-1.0.2u]# ln -s /usr/local/ssl/include/openssl /usr/include/openssl
[root@test openssl-1.0.2u]# ll /usr/bin/openssl
lrwxrwxrwx. 1 root root 26 6月  25 18:54 /usr/bin/openssl -> /usr/local/ssl/bin/openssl
[root@test openssl-1.0.2u]# ll /usr/include/openssl
lrwxrwxrwx. 1 root root 30 6月  25 18:54 /usr/include/openssl -> /usr/local/ssl/include/openssl

加载新配置

如果多次重复上面步骤【下面echo内容不要重复做,只做一次即可】
/sbin/ldconfig每次执行都无所谓的。

[root@test openssl-1.0.2u]# echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
[root@test openssl-1.0.2u]# /sbin/ldconfig

查看确认版本

[root@test openssl-1.0.2u]# openssl version
*升级前为OpenSSL 1.0.2k-fips  26 Jan 2017*
OpenSSL 1.0.2u  20 Dec 2019

报错实例和解决方案,原文如下:

[root@centos76_1 openssl-1.1.1j]# openssl version
-bash: /usr/bin/openssl: 没有那个文件或目录

实际上这个文件肯定是存在的

这就是不兼容导致的,直接重装其他版本

[root@centos76_1 openssl-1.1.1j]# ll /usr/bin/openssl
lrwxrwxrwx. 1 root root 26 5月 19 17:34 /usr/bin/openssl -> /usr/local/ssl/bin/openssl
[root@centos76_1 openssl-1.1.1j]#

[root@centos76_1 software]# rm -rf /usr/bin/openssl
[root@centos76_1 software]# rm -rf /usr/include/openssl



开始安装openssh

升级前版本查看

主要就是用来对比后面是否升级成功

[root@test ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
[root@test ~]# sshd -V
unknown option -- V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
usage: sshd [-46DdeiqTt] [-C connection_spec] [-c host_cert_file]
            [-E log_file] [-f config_file] [-g login_grace_time]
            [-h host_key_file] [-o option] [-p port] [-u len]

文件备份删除

[root@controll software]# mkdir /etc/ssh.bak
[root@controll software]# cp -r /etc/ssh /etc/ssh.bak/

 [root@controll software]# rm -rf /etc/ssh/*

解压tar包

[root@test ~]# ls
anaconda-ks.cfg  openssh-8.6p1.tar.gz  openssl-1.0.2u  openssl-1.0.2u.tar.gz
[root@test ~]# tar xfz openssh-8.6p1.tar.gz 
[root@test ~]# ls
anaconda-ks.cfg  openssh-8.6p1  openssh-8.6p1.tar.gz  openssl-1.0.2u  openssl-1.0.2u.tar.gz
[root@test ~]# 

编译安装新版本的openssh

[root@test ~]# cd openssh-8.6p1/
[root@test openssh-8.6p1]# ./configure --prefix=/usr/ --sysconfdir=/etc/ssh  --with-openssl-includes=/usr/local/ssl/include  --with-ssl-dir=/usr/local/ssl   --with-zlib   --with-md5-passwords   --with-pam  && make && make install

成功界面如下

[root@test openssh-8.6p1]# echo $?
0
[root@test openssh-8.6p1]# 

配置root可登录

[root@controll openssh-8.6p1]# cat /etc/ssh/sshd_config | egrep -nC 1 PermitRootLogin
31-#LoginGraceTime 2m
32:#PermitRootLogin prohibit-password
33:PermitRootLogin yes
34-#StrictModes yes

新文件拷贝

[root@test openssh-8.6p1]# cp -a contrib/redhat/sshd.init /etc/init.d/sshd
[root@test openssh-8.6p1]# cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
[root@test openssh-8.6p1]# chmod +x /etc/init.d/sshd
[root@test openssh-8.6p1]# 

新增sshd服务并设置开机自启动

# --add  增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。
[root@test openssh-8.6p1]# chkconfig --add sshd
[root@test openssh-8.6p1]# systemctl enable sshd
[root@test openssh-8.6p1]# 
[root@test openssh-8.6p1]# mkdir /data
[root@test openssh-8.6p1]# mv  /usr/lib/systemd/system/sshd.service  /data/
[root@test openssh-8.6p1]# 
 [root@test openssh-8.6p1]# chkconfig sshd on
注意:正在将请求转发到“systemctl enable sshd.socket”。
Created symlink from /etc/systemd/system/sockets.target.wants/sshd.socket to /usr/lib/systemd/system/sshd.socket.
[root@test openssh-8.6p1]# 
[root@test openssh-8.6p1]# systemctl restart sshd
[root@test openssh-8.6p1]# systemctl is-active sshd
active
[root@test openssh-8.6p1]# netstat -ntlp | grep 22
-bash: netstat: 未找到命令                               #yum -y install net-tools yum安装下
[root@test openssh-8.6p1]# netstat -ntlp | grep 22
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      53605/sshd: /usr/sb 
tcp6       0      0 :::22                   :::*                    LISTEN      53605/sshd: /usr/sb 
[root@test openssh-8.6p1]# 

到此 openssh就升级完成了

查看确认版本

sshd -v和ssh -V版本不一致解决办法

升级到8.6必须操作【否则工具无法连接】

[root@controll openssh-8.6p1]# tail -n 2 /etc/ssh/sshd_config

下面这行信息很长,注意复制完

KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group1-sha1,curve25519-sha256@libssh.org
[root@controll openssh-8.6p1]#
[root@controll openssh-8.6p1]#systemctl restart sshd

参数更改之后:
SSH登录正常,
技术分享图片

升级完登录测试【重要】

说明

openssh升级完毕以后,下面3项必须测试,而且每一项都必须正常才算升级成功,如果有任何一项测试失败,都不行!

工具测试

别的服务器ssh该台服务器【很重要】

我用的是ssh-keygen -R 跟IP地址
技术分享图片

ssh别的服务器测试

不用修改信息
技术分享图片

telnet关闭 【未配置telnet忽略】

如果之前开启,记得关闭,尤其生产环境
原文出处步骤:linkopenssh离线升级到最新版本【openssh8.0和8.6展示】方法-详细说明

原文:https://www.cnblogs.com/WH0704/p/14978361.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!