CentOS7 OpenSSL升级到OpenSSH9.5p1

2023-12-14 06:45

本文主要是介绍CentOS7 OpenSSL升级到OpenSSH9.5p1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文链接:
CentOS7 OpenSSL升级1.1.1w;OpenSSH 升级 9.5p1 保姆级教程
openssl从3.1.0升级到3.1.1遇到的问题

注意操作时需要联网请参考如下链接

内网服务器联网安装依赖参见我的另一篇文章

一、 前言

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

这里我们可以先升级OpenSSL到OpenSSL 1.1.1w 11 Sep 2023
然后再升级OpenSSH 到OpenSSH_9.5p1, OpenSSL 1.1.1w 11 Sep 2023

当然也可以从第三步开始操作,如果你的OpenSSL 版本太低会遇到报错 configure: error: OpenSSL >= 1.1.1 required,此时你需要跳到文末升级OpenSSL 再返回继续操作

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

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

原始版本信息如下。

二、升级OpenSSL

2.1 安装依赖

yum -y install gcc*

2.2备份、卸载原有OpenSSL
1、 查找openssl 相关目录,然后备份

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

2、 卸载 openssl (这一步看个人需要,我有洁癖所以我卸载了)

yum remove openssl

2.3安装openssl

tar -xzvf openssl-1.1.1w.tar.gzcd openssl-1.1.1w/./config --prefix=/usrmake && make install

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

2.4验证

[root@vm206 openssl-1.1.1w]# whereis opensslopenssl: /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  versionOpenSSL 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

内网中yum需要代理,请看本文开头的蓝色加粗超链接

3.1 安装telnet-server

yum install telnet* -ysystemctl  start telnet.socketsystemctl enable telnet.socketmv /etc/securetty /etc/securetty.bak

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

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

防火墙:

 firewall-cmd --state

关闭防火墙:

systemctl stop firewalld.service

测试telnet远程登录,telnet登录成功才进行接下来的操作,防止sshd服务被搞坏了远程连不上服务器

telnet 172.16.1.182
Type `help' to learn how to use Xshell prompt.
[D:\~]$ telnet 172.16.1.182Connecting to 172.16.1.182:23...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.Kernel 5.15.1-1.el7.elrepo.x86_64 on an x86_64
0003 login: root
Password: 
Last login: Wed Dec 13 09:46:44 from 172.10.110.247
[root@0003 ~]# 

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

接下来的操作用telnet远程,不要用ssh远程,防止升级OpenSSH9.5p1时原ssh文件卸载不干净

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.bakmv /usr/bin/ssh /usr/bin/ssh.bakmv /usr/sbin/sshd /usr/sbin/sshd.bakmv /etc/pam.d/sshd  /etc/pam.d/sshd.old

备份pam验证文件

3.4卸载旧版OpenSSH

yum remove openssh

3.5安装新版OpenSSH

tar -xzvf openssh-9.5p1.tar.gzcd openssh-9.5p1./configure --prefix=/usr --sysconfdir=/etc/ssh  --with-pam   --with-ssl-dir=/usr/local/lib64/

其中–prefix --sysconfdir 这两个参数我仍然采用了系统之前的默认路径,避免路径混乱导致的问题
如果报错 configure: error: OpenSSL >= 1.1.1 required请看文末的问题

makemake installcd /etc/pam.d/mv sshd.old sshd

恢复ssh pam认证

cd openssh-9.5p1/cp contrib/redhat/sshd.init /etc/init.d/sshdchkconfig --add sshdsystemctl  enable sshdsystemctl  start sshd

可以看到,已经升级成功

[root@0003 ~]# ssh -V
OpenSSH_9.5p1, OpenSSL 3.1.0 14 Mar 2023
[root@0003 ~]# 

3.6修改/etc/ssh/sshd_config 配置文件
文件修改如下,然后重启sshd服务即可在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

登录成功界面

在这里插入图片描述

问题

configure: error: OpenSSL >= 1.1.1 required

原因

原因是,我上一次修复BUG时,把openssl版本直接从1.1.1t升级到了3.1.0,需要的lib类库也需要从libssl.so.1.1更新到libssl.so.3,这一次同样是3版本,我以为不用更新了,所以出现了上面的错误;

解决办法

进入安装好的/usr/local/openssl311/lib64目录下(openssl311是自定义的,选择自己的安装目录),将libssl.so.3文件和libcrypto.so.3文件复制到/usr/lib64目录下,选择覆盖;

升级过程
下载:

内网中wget需要代理,请看本文开头的蓝色加粗超链接

wget https://www.openssl.org/source/openssl-3.1.0.tar.gz --no-check-certificate

解压:

tar -xzvf openssl-3.1.0.tar.gz

进入解压后目录:

cd openssl-3.1.0

配置安装目录:

./config --prefix=/usr/local/openssl310

注意–prefix=/usr/local/openssl311,如果–prefix=/usr/local/openssl覆盖安装之前版本会失败,我已踩坑
这里安装目录和之前目录保持不同,安装完成再去删除之前的 /usr/local/openssl目录,不删除就当废弃文件放在那也行

我在升级另一台服务器又遇到这个开头的错Can’t locate IPC/Cmd.pm in
参考:
编译升级OpenSSL报错:Can‘t locate IPC/Cmd.pm
解决一个问题----cpan配置(proxy,mirror)
cpan好像是一个脚本工具,类似于shell
即先安装cpan,初始化cpan配置时选手动配置,一直回车使用默认配置,再重新进入cpan命令行为其配置代理
再用cpan安装IPC/Cmd.pm

编译安装:

make && make install

进入安装好的/usr/local/openssl311/lib64目录下(openssl311是自定义的,选择自己的安装目录),

cd /usr/local/openssl310/lib64

将libssl.so.3文件和libcrypto.so.3文件复制到/usr/lib64目录下,选择覆盖;

cp libssl.so.3  /usr/lib64
cp libcrypto.so.3  /usr/lib64

本地查看是否成功:

/usr/local/openssl310/bin/openssl version -a

出现问题,解决后可正常显示新版本,或无问题,继续下一步
软链接:进入/usr/bin目录,查询openssl的软链接,如果指定的是旧版本,使用命令取消旧软链接

unlink /usr/bin/openssl

创建新软链接:

ln -s /usr/local/openssl310/bin/openssl /usr/bin/openssl

刷新命令库:

ldconfig

在任一目录直接验证,可查看到新版本

openssl version -a
[root@0003 ~]# openssl version -a
OpenSSL 3.1.0 14 Mar 2023 (Library: OpenSSL 3.1.0 14 Mar 2023)
built on: Tue Dec 12 08:24:05 2023 UTC
platform: linux-x86_64
options:  bn(64,64)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG
OPENSSLDIR: "/usr/local/openssl310/ssl"
ENGINESDIR: "/usr/local/openssl310/lib64/engines-3"
MODULESDIR: "/usr/local/openssl310/lib64/ossl-modules"
Seeding source: os-specific
CPUINFO: OPENSSL_ia32cap=0xfffa32035f8bffff:0x800d19e4fbb
[root@0003 ~]# 

这篇关于CentOS7 OpenSSL升级到OpenSSH9.5p1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/491525

相关文章

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我

macOS升级后SVN升级

问题 svn: error: The subversion command line tools are no longer provided by Xcode. 解决 sudo chown -R $(whoami) /usr/local/Cellar brew install svn

CentOs7上Mysql快速迁移脚本

因公司业务需要,对原来在/usr/local/mysql/data目录下的数据迁移到/data/local/mysql/mysqlData。 原因是系统盘太小,只有20G,几下就快满了。 参考过几篇文章,基于大神们的思路,我封装成了.sh脚本。 步骤如下: 1) 先修改好/etc/my.cnf,        ##[mysqld]       ##datadir=/data/loc

Golang支持平滑升级的HTTP服务

前段时间用Golang在做一个HTTP的接口,因编译型语言的特性,修改了代码需要重新编译可执行文件,关闭正在运行的老程序,并启动新程序。对于访问量较大的面向用户的产品,关闭、重启的过程中势必会出现无法访问的情况,从而影响用户体验。 使用Golang的系统包开发HTTP服务,是无法支持平滑升级(优雅重启)的,本文将探讨如何解决该问题。 一、平滑升级(优雅重启)的一般思路 一般情况下,要实现平滑

JeecgBoot 升级springboot版本到2.6.0

1. 环境描述 Jeecgboot 3.0,他所依赖的springboot版本为2.3.5Release,将springboot版本升级为2.6.0。过程全纪录,从2开始描述。 2. 修改springboot版本号 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-pare

欧拉系统 kernel 升级、降级

系统版本  cat  /etc/os-release  NAME="openEuler"VERSION="22.03 (LTS-SP1)"ID="openEuler"VERSION_ID="22.03"PRETTY_NAME="openEuler 22.03 (LTS-SP1)"ANSI_COLOR="0;31" 系统初始 kernel 版本 5.10.0-136.12.0.

centos7 安装rocketmq4.7.0以及RocketMQ-Console-Ng控制台

一、前置工作 1.1安装jdk8 https://blog.csdn.net/pang_ping/article/details/80570011 1.2安装maven https://www.cnblogs.com/116970u/p/11211963.html 1.3安装git https://blog.csdn.net/xwj1992930/article/details/964

Zookeeper集群是如何升级到新版本的

方案1:复用老数据方案 这是经过实践的升级方案,该方案是复用旧版本的数据,zk集群拓扑,配置文件都不变,只是启动的程序为最新的版本。 参考文章: Zookeeper集群是如何升级到新版本的 方案2:重新建立数据方案 该方案的思路是:先停掉一台follower的机器上的服务,然后加入一个新版本的zk(zk的数据目录是空的),然后启动新zk,之后新zk会把旧集群中的数据同步过来。之后再操作另