Linux 系统升级 OpenSSL & OpenSSH 安装指南
适用场景:需要 OpenSSL ≥ 1.1.1,低版本系统需先升级 OpenSSL。
注意:操作可能影响 SSH 登录,请严格按步骤操作。
0. 应急措施
- 保留应急登录方式
- 不要关闭当前 SSH 会话,在新 SSH 未验证通过前,保持旧会话。
- 如果条件允许,建议开启 本地终端 / IPMI / 控制台,防止无法登录。
- 备份旧版本(强烈建议)
备份 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
- 检查版本
openssl version
- 若 < 1.1.1,需要升级 OpenSSL。
- 下载并解压源码(建议 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
- 安装缺失的 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
- 编译安装 OpenSSL
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib
make -j$(nproc)
sudo make install
- 配置环境变量
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
- 验证版本
openssl version
应显示 OpenSSL 3.1.3 或更高
- 系统全局库路径配置
sudo bash -c 'echo "/usr/local/openssl/lib64" > /etc/ld.so.conf.d/openssl-3.conf'
sudo ldconfig
3. 安装 OpenSSH 10.0p2
- 下载源码
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
- 配置编译,指定新 OpenSSL
./configure --with-ssl-dir=/usr/local/openssl --sysconfdir=/etc/ssh
make -j$(nproc)
sudo make install
- 验证安装
/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
⚠️ 注意事项
- 不要删除系统默认 OpenSSL,否则系统工具(curl、git 等)可能报错。
- 保持旧 SSH 会话,避免新 OpenSSH 配置错误导致无法远程登录。
- 路径中不要使用特殊字符(如 ! 或 |)。
- 64 位系统库路径:新库一般安装在 lib64,不要写成 lib。