银河麒麟 V10 x86_64源码离线升级openssl,openssh
最近服务器扫除漏洞,openssl和openssh的版本过低导致,该篇文章记录升级过程和升级过程中安装包的下载地址;
注意:因为我的服务器有系统盘备份,升级崩了可以恢复,在升级之前请看文章第七点,
一定看 一定看 一定看 一定看 一定看 一定看 一定看 一定看 一定看 一定看 一定看 一定看
1、OpenSSL 3.0.19
官网主页:https://www.openssl.org/source/ 直接下载链接:
https://www.openssl.org/source/openssl-3.0.19.tar.gz2、OpenSSH 10.3p1(Portable Linux 适配版,带 p 后缀)
官方便携版主页:https://www.openssh.com/portable.html 直接下载链接:
https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-10.3p1.tar.gz3、依赖安装包
为了不到处下载依赖,我将依赖打包到一个文件夹中,上传后解压
依赖包等我升级完其他服务器再回来补
然后再依赖包目录下执行:
rpm -Uvh *.rpm --nodeps4、升级openssl
tar -zxvf openssl-3.0.19.tar.gz cd openssl-3.0.19 # 配置编译:安装路径+动态库支持 ./config --prefix=/usr/local/openssl3 shared zlib # 编译 make make install # 配置系统动态库 echo "/usr/local/openssl3/lib64" >> /etc/ld.so.conf ldconfig # 替换系统openssl软链接 mv /usr/bin/openssl /usr/bin/openssl.old ln -s /usr/local/openssl3/bin/openssl /usr/bin/openssl ln -s /usr/local/openssl3/lib64/libssl.so.3 /usr/lib64/libssl.so.3 ln -s /usr/local/openssl3/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3 # 验证新版本 openssl version # 输出应显示:OpenSSL 3.0.19 31 Jan 2026 (Library: OpenSSL 3.0.19 31 Jan 2026)5、升级openssh
tar -zxvf openssh-10.3p1.tar.gz cd openssh-10.3p1 # 编译配置(关键参数:绑定新OpenSSL、启用PAM、系统路径适配麒麟) ./configure \ --prefix=/usr \ --sysconfdir=/etc/ssh \ --with-pam \ --with-zlib \ --with-ssl-dir=/usr/local/openssl3 \ --with-privsep-path=/var/lib/sshd make -j$(nproc) make install # 修复SSH主机密钥权限 chmod 600 /etc/ssh/ssh_host_*_key # 清理旧版废弃GSSAPI配置(新版不兼容,会启动失败) sed -i '/^GSSAPIAuthentication/d' /etc/ssh/sshd_config sed -i '/^GSSAPICleanupCredentials/d' /etc/ssh/sshd_config # 兼容老旧客户端(避免rsa算法拒绝连接) echo "PubkeyAcceptedKeyTypes +ssh-rsa" >> /etc/ssh/sshd_config echo "HostKeyAlgorithms +ssh-rsa" >> /etc/ssh/sshd_config echo "KexAlgorithms +diffie-hellman-group1-sha1" >> /etc/ssh/sshd_config6、重启 sshd、校验升级结果
# 检查sshd配置语法(报错不要重启) sshd -t # 重载systemd,重启服务 systemctl daemon-reload systemctl restart sshd systemctl enable sshd # 查看新版本 ssh -V # 正常输出示例:OpenSSH_10.3p1, OpenSSL 3.0.19 31 Jan 2026 # 查看服务状态 systemctl status sshd7、关键注意点(升级前必做)
此处 是关键 是关键 是关键 是关键 是关键 是关键 是关键 是关键
1 、备份原有 SSH 全部文件(回滚救命)
# 二进制程序备份 cp /usr/bin/ssh /usr/bin/ssh.bak cp /usr/sbin/sshd /usr/sbin/sshd.bak # 配置目录整体备份 cp -r /etc/ssh /etc/ssh.bak.$(date +%Y%m%d) # PAM、systemd文件备份 cp /etc/pam.d/sshd /etc/pam.d/sshd.bak cp /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service.bak2、打开两个终端窗口,并且升级过程不要关闭(必须做必须做)
3、开启 Telnet 兜底通道(升级失败应急登录)
yum install telnet-server telnet xinetd -y systemctl enable --now telnet.socket # 防火墙放行23端口 firewall-cmd --add-port=23/tcp --permanent firewall-cmd --reload # 允许root telnet登录 echo "pts/0" >> /etc/securetty4、异常回滚方案(升级失败无法 SSH 时,Telnet 登录执行)
# 恢复ssh二进制 mv /usr/bin/ssh.bak /usr/bin/ssh mv /usr/sbin/sshd.bak /usr/sbin/sshd # 恢复配置目录 rm -rf /etc/ssh && mv /etc/ssh.bak.* /etc/ssh # 恢复PAM配置 mv /etc/pam.d/sshd.bak /etc/pam.d/sshd # 恢复系统openssl mv /usr/bin/openssl.old /usr/bin/openssl ldconfig # 重启服务 systemctl restart sshd最后,希望大家升级顺顺利利
