国产化服务器离线升级openssh详细过程
背景描述
国产化服务器扫描出了openssh漏洞需要修复,需要进行版本升级修复漏洞,但是服务器无法连互联网,所以只能离线进行升级。
服务器操作系统为uos的一款开源操作系统,现有openssh版本为openssh8.8,OpenSSL 为1.1.1f
因为openssh9.9p2版本修复了2个新漏洞,CVE-2025-26465和CVE-2025-26466
建议直接升级到openssh10.0p2版本 ,经测试,麒麟V10版本同样适用以下升级办法。
PS:网上有说openssh10.0p2需要OpenSSL升级到3.0以上版本,实际测试OpenSSL1.1.1f也可以正常编译安装,所以本次不涉及升级OpenSSL
准备工作
- 开启备用连接(防止升级失败失联)
- 1、建议开启telnet服务,避免openssh安装失败后,无法远程连接服务器,也可以安装其他的远程连接服务器的服务。 云服务器建议启用镜像备份
- 2、全面备份关键文件
mkdir /backup_ssh
cp -r /etc/ssh /backup_ssh/ssh_$(date +%Y%m%d)
cp /usr/sbin/sshd /backup_ssh/sshd_bin
cp /etc/pam.d/sshd /backup_ssh/sshd_pam
- 3、检查当前环境
ssh -V # 查看现有OpenSSH版本openssl version # 确认OpenSSL版本(需≥1.1.1)
修复过程
- 下载源码包
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-10.0p2.tar.gz
- 解压源码包
tar -zxvf openssh-10.0p2.tar.gz- 编译安装
- 1、这部分已经备份,为了避免安装时候提示无法覆盖,建议删除这些文件,重新生成配置
rm -f /etc/ssh/ssh_config /etc/ssh/sshd_config /etc/ssh/moduli- 2、编译源码
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam- 重启时执行sudo sed -i ‘s/^#CRYPTO_POLICY=/CRYPTO_POLICY=/’ /etc/sysconfig/sshd。
- 或使用下面语句编译
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --without-crypto-policiesmake && make install- 3、还原旧配置
cp /backup_ssh/ssh_*/sshd_config /etc/ssh/- 4、处理旧配置文件中不兼容新版本部分
- OpenSSH 10.0p2 已移除对 UsePAM 的支持
sed -i '/^UsePAM/d' /etc/ssh/sshd_config # 删除该行- 新版本禁用不安全的 ssh-dss 和弱 ssh-rsa
sed -i 's/+ssh-dss,ssh-rsa//g' /etc/ssh/sshd_config # 清理无效密钥类型- 删除无效的空参数配置行
sed -i '/^PubkeyAcceptedKeyTypess*$/d' /etc/ssh/sshd_configsed -i '/^RSAAuthentication/d; /^RhostsRSAAuthentication/d' /etc/ssh/sshd_config- 替换成安全算法
echo "PubkeyAcceptedKeyTypes ssh-ed25519,ecdsa-sha2-nistp384" >> /etc/ssh/sshd_config- 修复权限
chmod 600 /etc/ssh/ssh_host_*_key # 修复密钥权限chown root:root /usr/sbin/sshd
注意事项
1、安全降级风险
禁用加密策略后需手动配置算法白名单,建议保留以下最低安全配置:
sudo vi /etc/ssh/sshd_config
# 密钥交换算法白名单
KexAlgorithms curve25519-sha256,ecdh-sha2-nistp384
# 加密算法白名单
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
注:配置需置于文件末尾或对应模块区域,避免被其他指令覆盖
验证
- 语法检查,无输出证明无语发问题
/usr/sbin/sshd -t- 重启服务
systemctl restart sshd- 验证版本
ssh -V # 验证版本显示 OpenSSH_10.0p2








