CentOS 7的内网环境中将OpenSSH升级到较高版本
-
安装编译依赖包
升级过程需要编译软件,请安装必要的开发工具和库。yum install -y gcc make pam-devel zlib-devel wget
-
备份重要文件
防止升级失败,备份是关键。# 备份整个SSH配置目录 cp -rp /etc/ssh /etc/ssh_bak # 备份PAM的SSH配置文件 (重要!编译安装可能会覆盖此文件) cp /etc/pam.d/sshd /root/sshd_pam.bak # 备份OpenSSL(如果已存在) cp /usr/bin/openssl /usr/bin/openssl.bak
📥 离线获取安装包
在内网机器上,你需要提前从官网下载好源码包,然后通过U盘或内网传输工具复制到CentOS 7服务器上。以下是目前较新的稳定版本,你可以根据需求调整版本号。
软件 | 推荐版本 | 下载地址 (在可联网机器上访问) |
---|---|---|
OpenSSL | 1.1.1w | https://www.openssl.org/source/openssl-1.1.1w.tar.gz |
OpenSSH | 9.6p1 | https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.6p1.tar.gz |
🛠️ 升级OpenSSL
OpenSSH的高版本依赖于较新的OpenSSL库。
-
编译安装OpenSSL
# 解压 tar -zxvf openssl-1.1.1w.tar.gz cd openssl-1.1.1w # 配置、编译和安装 ./config --prefix=/usr/local/openssl shared make && make install
-
配置系统使用新的OpenSSL
# 创建软链接,使系统命令指向新版本 ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl ln -sf /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/ ln -sf /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/ # 更新动态链接库缓存 echo "/usr/local/openssl/lib" >> /etc/ld.so.conf.d/openssl-1.1.1w.conf ldconfig
-
验证OpenSSL版本
执行openssl version
,应显示OpenSSL 1.1.1w ...
。
🔑 升级OpenSSH
现在开始编译安装新版本的OpenSSH。
-
编译安装OpenSSH
# 解压 tar -zxvf openssh-9.6p1.tar.gz cd openssh-9.6p1 # 配置,指定新的OpenSSL路径 ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl --with-pam --with-zlib --with-md5-passwords # 编译并安装 make && make install
-
恢复配置并启用服务
# 恢复之前备份的PAM配置 cp /root/sshd_pam.bak /etc/pam.d/sshd # 恢复sshd_config (或用新的为基础修改) cp /etc/ssh_bak/sshd_config /etc/ssh/sshd_config # 复制启动脚本并启用服务 cp contrib/redhat/sshd.init /etc/init.d/sshd chkconfig --add sshd chkconfig sshd on
✅ 收尾工作与验证
-
重启SSH服务
systemctl daemon-reload systemctl restart sshd
-
验证版本
执行ssh -V
,输出应类似OpenSSH_9.6p1, OpenSSL 1.1.1w ...
。