CentOS7 OpenSSL升级1.1.1w;OpenSSH 升级 9.5p1 保姆级教程

 修订信息

#2023/10/27 初始版本

#2024/11/28 对网友反馈的问题进行了说明,同时对openssl-3.4.0 安装进行了测试

一、 前言

OpenSSH 的加密功能需要用到OpenSSL,所以在升级OpenSSH的时候,大部分情况是需要将OpenSSL一起升级的。

这里我们选择先升级OpenSSL到OpenSSL 1.1.1w  11 Sep 2023

然后再升级OpenSSH 到OpenSSH_9.5p1, OpenSSL 1.1.1w  11 Sep 2023

#升级OpenSSL 3.X.X 的过程和这个一样,没有任何区别

1.1 注意点

升级之前先将需要的包上传到服务器,以免升级失败后导致上传文件失败。(这里我用的sftp上传,sftp的核心也需要用到SSH),并安装telnet-server服务保证SSH升级失败后,可以继续远程连接。

需要有初始yum源,要不然安装这两个服务众多的依赖包将会是梦魇。

原始版本信息如下。

 

二、升级OpenSSL

2.1 安装依赖

yum -y install gcc*
yum -y install perl-IPC-Cmd perl-Data-Dumper  

# openssl-3.4.0才需要需perl-IPC-Cmd  perl-Data-Dumper

2.2备份、卸载原有OpenSSL

1、 查找openssl 相关目录,然后备份

[root@vm206 etc]# whereis openssl
openssl: /usr/bin/openssl /usr/lib64/openssl /usr/share/man/man1/openssl.1ssl.gz
mv /usr/bin/openssl  /usr/bin/openssl.old
mv /usr/lib64/openssl /usr/lib64/openssl.old
mv /usr/include/openssl  /usr/include/openssl.old

#/usr/include/openssl   这个文件夹一开始没有的话,后续大概率会报错,继续往下操作,后续报错的时候会告知如何解决

2、 卸载 openssl 

yum -y remove openssl

2.3安装openssl

tar -xzvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w/
./config --prefix=/usr
make && make install

#这里我的目录选择了/usr 是因为系统最初始的openssl的目录就是/usr 这样可以省去的软连接、更新链接库的问题

2.4验证

[root@vm206 openssl-1.1.1w]# whereis openssl
openssl: /usr/bin/openssl /usr/lib64/openssl /usr/include/openssl /usr/share/man/man1/openssl.1ssl.gz /usr/share/man/man1/openssl.1
[root@vm206 openssl-1.1.1w]# openssl  version
OpenSSL 1.1.1w  11 Sep 2023

#可以看到我这边的目录和老版本的openssl的目录保持了一致,唯一不同的是多了一个/usr/include/openssl 库目录

#如果不加prefix ,openssl的默认路径如下

Bin:  /usr/local/bin/openssl

include库  :/usr/local/include/openssl

lib库:/usr/local/lib64/

engine库:/usr/lib64/openssl/engines

三、 升级OpenSSH

3.1 安装telnet-server

yum install telnet* -y
systemctl  start telnet.socket
systemctl enable telnet.socket
mv /etc/securetty /etc/securetty.bak
setenforce  0

#临时关闭安全登录,否则无法进行远程telnet连接

#有防火墙记得关闭防火墙,并关闭SELinux

 

#如上,已经可以通过telnet远程连接了,这下可以放心大胆的操作了。

3.2 安装依赖包

yum install -y gcc pam-devel rpm-build wget zlib-devel openssl-devel net-tools

3.3 备份

 

#通过whereis ssh sshd找出bin文件、源文件,然后备份。 man手册不需要备份。

mv /etc/ssh /etc/ssh.bak
mv /usr/bin/ssh /usr/bin/ssh.bak
mv /usr/sbin/sshd /usr/sbin/sshd.bak

mv /etc/pam.d/sshd  /etc/pam.d/sshd.old
#备份pam验证文件

3.4卸载旧版OpenSSH

yum -y remove openssh

3.5安装新版OpenSSH

tar -xzvf openssh-9.5p1.tar.gz

cd openssh-9.5p1

./configure --prefix=/usr --sysconfdir=/etc/ssh  --with-pam   --with-ssl-dir=/usr/lib64/

#--with-ssl-dir=/usr/lib64/ 这个是openssl的库文件目录

#其中--prefix --sysconfdir 这两个参数我仍然采用了系统之前的默认路径,避免路径混乱导致的问题

如果出现如下报错:

用whereis openssl 会发现多出了/usr/include/openssl

重新回到openssl目录make install ,然后再回到openssh目录重新config即可

mv /usr/include/openssl /usr/include/openssl.old
cd openssl-1.1.1w/
make install
#重新make install openssl 

make && make install
#然后再回到openssh文件夹执行config操作
mv /etc/pam.d/sshd.old  /etc/pam.d/sshd 
#恢复ssh pam认证
cd openssh-9.5p1/
cp contrib/redhat/sshd.init /etc/init.d/sshd
chkconfig --add sshd
systemctl  enable sshd
systemctl  start sshd

 

#可以看到,已经升级成功

3.6修改/etc/ssh/sshd_config 配置文件

 增加33行,修改48、83行,然后systemctl  restart sshd 重启sshd服务即可

 #登录成功界面

mv /etc/securetty.bak  /etc/securetty

#记得恢复安全登录

posted @ 2023-10-27 16:09  湖南馒头  阅读(11376)  评论(11编辑  收藏  举报