CentOS环境下手动升级openssl、openssh

说明:
本文主要讲述将CentOS环境中,openssl从1.0.2k升级至3.0.20,openssh从7.4p1升级至10.3p1。

1. 前期部署准备及说明

1.1 相关产品下载地址

复制代码
zlib下载地址:https://www.zlib.net/
openssl下载地址:https://openssl-library.org/source/
openssh下载地址:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/

1.2 相关路径规划

相关产品存放目录:/apps/scripts

复制代码
mkdir -p /apps/scripts/

1.3 服务器基本信息

1.3.1 查看OS版本

复制代码
cat /etc/os-release

1.3.2 查看OS架构

复制代码
arch

1.3.3 当前ssl版本

复制代码
openssl version

1.3.4 当前ssh版本

复制代码
ssh -V

1.4 依赖安装

复制代码
yum install -y perl perl-core gcc gcc-c++ make autoconf automake patch libtool pam-devel

1.5 产品下载

zlib版本:1.3.2

openssl版本:3.0.20

openssh版本:10.3sp1

1.6 相关产品上传

将相关产品上传至:/apps/scripts目录下

2. 升级相关操作

2.1 zlib安装

2.1.1 解压

复制代码
tar -xf zlib-1.3.2.tar.gz -C /apps/

2.1.2 切换目录

复制代码
cd /apps/zlib-1.3.2/

2.1.3 配置

复制代码
./configure

2.1.4 编译

复制代码
make

2.1.5 安装

复制代码
make install

2.1.6 配置调整

复制代码
cp zutil.h /usr/local/include/
cp zutil.c /usr/local/include/

2.2 openssl升级

2.2.1 解压

复制代码
cd /apps/scripts/
tar -xf openssl-3.0.20.tar.gz -C /apps/

2.2.2 切换目录

复制代码
cd /apps/openssl-3.0.20/

2.2.3 配置

复制代码
./config --prefix=/usr/local/openssl

2.2.4 编译

复制代码
make

2.2.5 安装

复制代码
make install

2.2.6 相关调整

  1. 备份原始openssl

    mv /usr/bin/openssl /usr/bin/openssl_bak

  1. 复制新版本openssl到/usr/bin/目录

    cp /usr/local/openssl/bin/openssl /usr/bin/

  1. 调整配置文件

    1.查看编译安装目录为:lib还是lib64

    ls /usr/local/openssl/

    显示结果如下:

    bin include lib64 share ssl

    显示为:lib64

    2.查看原始配置文件

    cat /etc/ld.so.conf

    显示内容如下:

    include ld.so.conf.d/*.conf

    3.配置文件调整

    echo '/usr/local/openssl/lib64/' >> /etc/ld.so.conf

    4.再次查看

    cat /etc/ld.so.conf

    显示内容如下:

    include ld.so.conf.d/*.conf
    /usr/local/openssl/lib64/

  1. 更新配置文件

    ldconfig

2.2.7 验证

复制代码
openssl version
# 已从:1.0.2k升级到3.0.20版本

2.3 openssh升级

2.3.1 解压

复制代码
cd /apps/scripts/
tar -xf openssh-10.3p1.tar.gz -C /apps/

2.3.2 切换目录

复制代码
cd /apps/openssl-3.0.20/

2.3.3 配置

复制代码
./configure --prefix=/usr/local/openssh --with-ssl-dir=/usr/local/openssl --sysconfdir=/etc/ssh --with-pam --with-gssapi --with-rsa --with-rhosts-allowed --with-zlib --with-md5-passwords

2.3.4 编译

复制代码
make

2.3.5 安装

复制代码
make install

2.3.6 相关调整

1.部署版本验证

复制代码
/usr/local/openssh/bin/ssh -V
  1. 备份原始openssh

    mv /usr/sbin/sshd /usr/sbin/sshd_bak
    mv /usr/bin/ssh /usr/bin/ssh_bak
    mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen_bak

  1. 复制新版本openssh相关目录

    cp -rp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
    cp -rp /usr/local/openssh/bin/ssh /usr/bin/ssh
    cp -rp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen

  1. 重启sshd服务

    systemctl restart sshd

    重启时候报错,解决方法见4.常见问题章节

3. 升级后版本验证

3.1 升级后ssl版本

复制代码
openssl version

3.2 升级后ssh版本

复制代码
ssh -V

4.常见问题

4.1 升级openssh后,重启sshd服务报错

复制代码
# 执行重启命令时候,新开一个命令窗口,同步查看相关日志
# 窗口1执行:
systemctl restart sshd

# 窗口2执行:
tail -f /var/log/messages
# 显示结果如下
# 报错重点关键字:Permissions 0640

报错详情如下:

解决方法:

复制代码
# 删除旧证书
rm -f /etc/ssh/ssh_host_*

# 重新生成证书
/usr/bin/ssh-keygen -A

# 修改生成证书权限
chmod 600 /etc/ssh/ssh_host_*
chmod 644 /etc/ssh/*.pub

4.2 升级openssh后,除当前窗口,其他窗口无法再进行连接

切记:通过远程方式连接的shell会话,切勿关闭,关闭后无法再次连接
解决方法:

复制代码
vim /etc/ssh/sshd_config

# 取消下述配置项前方的#号
Port 22
PermitRootLogin yes

详细配置如下:

复制代码
Port 22
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
SyslogFacility AUTHPRIV
PermitRootLogin yes
AuthorizedKeysFile	.ssh/authorized_keys
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem	sftp	/usr/libexec/openssh/sftp-server

另,需注意配置文件:/etc/selinux/config下SELINUX参数,必须修改为:disabled。
参数为enforcing时,会产生一些比较怪异的问题

相关推荐
迪康Defender13 分钟前
政企内网终端安全建设:资产‑管控‑防护‑审计闭环能力拆解
运维·网络·安全·web安全·终端安全管理
Neighbor_OldY21 分钟前
【实战复盘】文件上传漏洞检测与应急处置:校验绕过、图片马与WebShell的排查修复指南
运维·前端·web安全
米糕闯编程38 分钟前
鱼香ros2(一)在ubuntu中安装ros2
linux·运维·ubuntu·机器学习
数字孪生视频孪生39 分钟前
三维实时重构异构底座 核工危化无感定位跨境轨迹一屏统揽
大数据·运维·人工智能·重构·架构
Huangjin007_41 分钟前
【Linux 系统篇(十八)】进程(六) :环境变量
linux·运维·服务器
ShineWinsu43 分钟前
对于MySQL:数据库的操作的解析
linux·数据库·c++·mysql·面试·笔试·库的操作
cnnews1 小时前
Ubuntu 编译 postmarketOS
linux·运维·arm开发·ubuntu·github·音视频
w01_02_031 小时前
linux, 桌面, 自启动。
linux·运维·服务器
云飞云共享云桌面1 小时前
SolidWorks+AutoCAD,多并发。可以多人共享一台设计服务器吗
运维·服务器·3d·自动化·制造
伩仁1 小时前
WSL2 跑起 Web 服务后,本机和局域网设备怎么都能访问?一套两步法彻底搞懂
运维