Linux 系统升级 OpenSSL 3.1.3& OpenSSH 10.0p2安装指南-踩坑日记

Linux 系统升级 OpenSSL & OpenSSH 安装指南

适用场景:需要 OpenSSL ≥ 1.1.1,低版本系统需先升级 OpenSSL。

注意:操作可能影响 SSH 登录,请严格按步骤操作。


0. 应急措施

  1. 保留应急登录方式
    • 不要关闭当前 SSH 会话,在新 SSH 未验证通过前,保持旧会话。
    • 如果条件允许,建议开启 本地终端 / IPMI / 控制台,防止无法登录。
  2. 备份旧版本(强烈建议)

备份 OpenSSH

sudo mkdir -p /usr/local/backup/openssh

sudo cp /usr/bin/ssh /usr/local/backup/openssh/

sudo cp /usr/sbin/sshd /usr/local/backup/openssh/

sudo cp -r /etc/ssh /usr/local/backup/openssh/etc_ssh

备份 OpenSSL

sudo mkdir -p /usr/local/backup/openssl

sudo cp -r /usr/bin/openssl* /usr/local/backup/openssl/ 2>/dev/null || true

sudo cp -r /usr/lib64/libssl* /usr/local/backup/openssl/ 2>/dev/null || true

sudo cp -r /usr/lib64/libcrypto* /usr/local/backup/openssl/ 2>/dev/null || true


1. 安装依赖环境

CentOS / RHEL

sudo yum groupinstall "Development Tools" -y

sudo yum install wget curl zlib-devel -y

Ubuntu / Debian

sudo apt update

sudo apt install build-essential zlib1g-dev wget curl -y


2. 安装新版 OpenSSL

  1. 检查版本

openssl version

  • 若 < 1.1.1,需要升级 OpenSSL。
  1. 下载并解压源码(建议 3.x 版本)

cd /usr/local/src

wget https://www.openssl.org/source/openssl-3.1.3.tar.gz

tar -xzf openssl-3.1.3.tar.gz

cd openssl-3.1.3

  1. 安装缺失的 Perl 模块(编译依赖 - 适用时)

RHEL / CentOS

sudo yum install perl-IPC-Cmd perl-core -y

Ubuntu / Debian

sudo apt install perl-modules build-essential -y

sudo cpan IPC::Cmd

  1. 编译安装 OpenSSL

./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib

make -j$(nproc)

sudo make install

  1. 配置环境变量

export PATH=/usr/local/openssl/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/openssl/lib64:$LD_LIBRARY_PATH

export PKG_CONFIG_PATH=/usr/local/openssl/lib64/pkgconfig:$PKG_CONFIG_PATH

  1. 验证版本

openssl version

应显示 OpenSSL 3.1.3 或更高

  1. 系统全局库路径配置

sudo bash -c 'echo "/usr/local/openssl/lib64" > /etc/ld.so.conf.d/openssl-3.conf'

sudo ldconfig


3. 安装 OpenSSH 10.0p2

  1. 下载源码

cd /usr/local/src

wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-10.0p2.tar.gz

tar -xzf openssh-10.0p2.tar.gz

cd openssh-10.0p2

  1. 配置编译,指定新 OpenSSL

./configure --with-ssl-dir=/usr/local/openssl --sysconfdir=/etc/ssh

make -j$(nproc)

sudo make install

  1. 验证安装

/usr/local/bin/ssh -V

应显示 OpenSSH_10.0p2, OpenSSL 3.1.3 ...


4. 常见问题与解决

4.1 编译 OpenSSL Perl 模块缺失

Can't locate IPC/Cmd.pm in @INC ...

  • 解决:安装缺失 Perl 模块(见步骤 2.3)

4.2 系统找不到 libssl.so.3 / libcrypto.so.3

openssl: error while loading shared libraries: libssl.so.3: cannot open shared object file

  • 检查库文件

ls -l /usr/local/openssl/lib64

  • 添加到系统动态库路径并刷新缓存

sudo bash -c 'echo "/usr/local/openssl/lib64" > /etc/ld.so.conf.d/openssl-3.conf'

sudo ldconfig

4.3 OpenSSH ./configure 仍检测到旧 OpenSSL

checking OpenSSL library version... configure: error: OpenSSL >= 1.1.1 required (have "100020bf")

  • 原因:默认检测系统路径未找到新 OpenSSL
  • 解决:编译时明确指定新 OpenSSL 路径

./configure --with-ssl-dir=/usr/local/openssl

  • 并确保:

export LD_LIBRARY_PATH=/usr/local/openssl/lib64:$LD_LIBRARY_PATH

export PKG_CONFIG_PATH=/usr/local/openssl/lib64/pkgconfig:$PKG_CONFIG_PATH


⚠️ 注意事项

  1. 不要删除系统默认 OpenSSL,否则系统工具(curl、git 等)可能报错。
  2. 保持旧 SSH 会话,避免新 OpenSSH 配置错误导致无法远程登录。
  3. 路径中不要使用特殊字符(如 ! 或 |)。
  4. 64 位系统库路径:新库一般安装在 lib64,不要写成 lib。