当前位置: 首页 > news >正文

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


2. 备份原始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


4. 重启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时,会产生一些比较怪异的问题

http://www.gsyq.cn/news/1418647.html

相关文章:

  • RTX51 Tiny调试技巧与C源代码显示问题解析
  • RTX51 Tiny在SiLABS SFR分页机制下的移植优化
  • 深入UGUI底层:手把手教你用OnPopulateMesh和顶点偏移,实现Image的任意变形(不只是倾斜)
  • 用 Nerfstudio 和手机照片,5分钟快速生成你的第一个 3D 数字手办(Nerfacto 模型实战)
  • 从一次“幻觉”到一次“进化”:AI事实核查错误的深度剖析与系统改进启示
  • 从状态检查到数据备份:仓储PLC控制器保养周期与实操清单
  • 效率拉满!VS Code 安装 Qoder CN(原通义灵码)详细教程
  • 别再只关RST了!深入聊聊Intel快速存储技术(RAID)与Ubuntu/Linux的‘爱恨情仇’
  • 10427条密码产品证书全部收集到,我发现几个数据跟认知完全对不上
  • Jetson Orin Nano + DeepStream 6.2 实战:将YOLOv5模型集成到生产级视觉流水线
  • 如何查物种的12S基因片段是否存在于NCBI公共数据库?
  • 别再傻傻用软件SPI了!实测STM32硬件SPI驱动GC9A01屏幕,速度提升10倍(附完整代码)
  • 从音响制造到AI家庭娱乐生态:不见不散AI智能K歌音响亮相第二十届深圳国际金融博览会
  • 手把手教你用阿里云服务器本地部署AWS DeepRacer训练环境(避坑指南)
  • 量子采样经典算法:突破NISQ时代组合优化瓶颈
  • docker 实战:将一个多组件应用完整容器化
  • 亚控组态数据导出踩坑实录:报表保存为Excel时文件名乱码、数据错位的解决办法
  • Unity游戏特效实战:用LineRenderer复刻红警磁暴闪电(附完整C#源码)
  • STM32CubeMX外部中断实战:从按键消抖到串口打印,一个完整项目带你避坑
  • 0105【天尊法典】晶体管微缩路径全域锁死:脱离尺寸缩减,算力提升的全域实证与唯一解法
  • Lua 协程:从 API 到底层原理再到 Skynet 架构的完整学习路径
  • Sora 2多视角时空对齐难题攻克,360°视频生成延迟降至117ms——内部Benchmark独家解析
  • 面试官灵魂拷问:A2A协议到底干啥?它与MCP的区别,90%的人都搞错了!
  • 猫抓浏览器扩展:5步掌握终极网页资源嗅探工具
  • Jetson Orin Nano 新手避坑:从零部署YoloV5,我踩过的那些环境配置的坑
  • Keil C51汇编中A14错误解析与解决方案
  • Unity2021升级踩坑记:手把手教你用.androidlib文件夹解决Android资源打包报错
  • 别再傻傻等Unity Logo了!手把手教你用SplashScreen.Stop实现启动屏自定义(附避坑指南)
  • 从Warmup看栈溢出:用GDB+Pedal动态调试BUUCTF CSAW 2016题目
  • 别再手动折腾了!用Composer+PHPStudy一键搞定Imagick扩展(附常见报错解决)