麒麟系统升级 OpenSSH 完整指南(.run 与 .rpm 两种方式)


适用系统:银河麒麟桌面版 / 麒麟 V10(服务器版 SP1~SP3)
升级目标:将系统自带的低版本 OpenSSH 升级到安全修复后的高版本
软件形态:本文覆盖.run自解压安装包(x86_64) 与.rpm软件包(aarch64) 两种升级方式
目录
- 一、为什么要升级 OpenSSH
- 二、升级前必读(安全警告)
- 三、升级前的准备工作
- 四、两种安装包的区别
- 五、方式一:.run 安装包(x86_64 架构)
- 六、方式二:.rpm 安装包(aarch64 架构)
- 七、通用验证步骤
- 八、升级失败如何回退
- 九、常见问题 FAQ
- 十、总结
一、为什么要升级 OpenSSH
OpenSSH 是 Linux/麒麟系统中最常用的远程登录与文件传输服务(sshd、ssh、sftp、scp)。系统自带的 OpenSSH 版本往往较低,存在已公开的安全漏洞(如命令注入、身份认证绕过、信息泄露等),在等保测评、安全扫描中常被判定为「高危漏洞」并要求整改。
通过升级到官方修复版本(如本文涉及的 OpenSSH 10.3p1、9.9sp1),可以:
- 修复已知 CVE 安全漏洞,通过安全测评;
- 提升加密算法的强度与兼容性;
- 满足客户/监管对 SSH 版本的最低要求。
二、升级前必读(安全警告)
⚠️ 这条必须放在最前面,务必牢记:
请勿关闭当前的 SSH 连接!
升级 OpenSSH 会重启 sshd 服务。如果升级过程中出现问题(配置错误、版本不兼容、服务启动失败等),当前的 SSH 会话是你唯一的「后门」。
正确的做法是:
- 保留当前 SSH 会话不关闭;
- 升级并重启服务后,另开一个新的 SSH 连接进行验证;
- 只有当新连接能正常登录、且版本验证通过后,才考虑关闭旧会话;
- 如果新连接失败,立即用当前旧会话进行回退(恢复备份配置 / 降级包)。
简单记:「升级不留旧路,出事只能重装系统」。
三、升级前的准备工作
3.1 查看系统架构
不同架构对应不同的安装包格式,先确认 CPU 架构:
uname -m
# 或者
arch| 输出结果 | 架构 | 对应安装包 |
|---|---|---|
x86_64 | Intel / AMD / 兆芯 / 海光 等 | .run 自解压安装包 |
aarch64 | 鲲鹏 920 / 飞腾 等 ARM 芯片 | .rpm 软件包 |
3.2 查看当前 OpenSSH 版本
ssh -V记录下当前版本号,便于升级前后对比。
3.3 准备安装包
将对应的安装包(.run 或 .rpm)上传到服务器,并解压/整理到独立目录,例如:
# 示例:将压缩包上传后解压
tar -xvf 麒麟V10SP1-3-openssh-10.3p1.tar.gz
# 得到目录:麒麟V10SP1-3-openssh-10.3p1/四、两种安装包的区别
| 对比项 | .run 安装包 | .rpm 软件包 |
|---|---|---|
| 适用架构 | x86_64(Intel / AMD / 兆芯 / 海光) | aarch64(鲲鹏 / 飞腾等 ARM) |
| 本质 | 自解压、自动安装的可执行脚本 | Red Hat 系标准软件包管理格式 |
| 安装方式 | chmod +x 授权后 ./xxx.run 直接执行 | rpm -Uvh 升级安装 |
| 依赖处理 | 脚本内部自动处理,基本无需干预 | 依赖系统 rpm 包管理器 |
| 典型文件 | pkgsUpdate-ssh10.3p1-ky10.x86_64-20260427.run | openssh-*.rpm(多个 rpm 文件) |
| 优缺点 | 一键式、省心,官方封装 | 更标准,可用 rpm -qa 查询管理 |
选择原则:看架构,不看喜好。x86_64 用.run,aarch64 用.rpm。
五、方式一:.run 安装包(x86_64 架构)
适用于 Intel / AMD / 兆芯 / 海光 等 x86_64 架构的麒麟 V10 系统。
5.1 重载 systemd 配置
systemctl daemon-reload5.2 备份原 SSH 配置
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_configbak备份文件 sshd_configbak 是升级失败后回退的关键,务必保留。5.3 进入新版目录
cd 麒麟V10SP1-3-openssh-10.3p1/5.4 赋予安装脚本执行权限
chmod +x pkgsUpdate-ssh10.3p1-ky10.x86_64-20260427.run5.5 开始安装
./pkgsUpdate-ssh10.3p1-ky10.x86_64-20260427.run安装脚本会自动完成卸载旧版本、安装新版本、处理依赖等操作,等待执行结束即可。
5.6 测试配置是否有误
sudo sshd -t该命令用于校验
sshd_config配置文件语法是否正确。
- 无输出 = 配置正确;
- 有报错 = 根据提示修改配置后重试。
5.7 启动 / 重启 SSH 服务
sudo systemctl start sshd
sudo systemctl restart sshd.service
sudo systemctl status sshd.service观察status输出中是否为active (running),确保服务正常启动。
5.8 验证版本
ssh -V应能看到类似 OpenSSH_10.3p1 的新版本信息。
六、方式二:.rpm 安装包(aarch64 架构)
适用于鲲鹏 920 / 飞腾等 aarch64(ARM64)架构的银河麒麟系统。
📌 特别说明:银河麒麟在重启 SSH 服务时,需要多执行一步
systemctl daemon-reload。
即便前面没有手动执行,系统在重启服务时通常也会有相关提示,按提示操作即可。
6.1 重载 systemd 配置
systemctl daemon-reload6.2 备份原 SSH 配置
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_configbak6.3 进入 rpm 包目录
cd openssh9.9sp1-aarch646.4 升级安装(rpm -Uvh)
sudo rpm -Uvh openssh-*.rpm参数说明:
-U:升级(Upgrade),若软件已安装则升级,未安装则安装;-v:显示详细信息;-h:显示安装进度条(#)。
openssh-*.rpm通配符会一次性安装/升级目录下所有相关 rpm 包(openssh 主程序、客户端、服务端等)。
6.5 测试配置是否有误
sudo sshd -t6.6 启动 / 重启 SSH 服务
sudo systemctl start sshd
sudo systemctl restart sshd.service
sudo systemctl status sshd.service⚠️ 如果这里提示需要daemon-reload,先执行systemctl daemon-reload再重启。
6.7 验证版本
ssh -V应能看到类似 OpenSSH_9.9p1 的新版本信息。
7、通用验证步骤
无论采用哪种方式升级,升级完成后都建议按以下顺序完整验证:
7.1 验证版本
ssh -V确认输出为升级后的目标版本。
7.2 验证服务状态
sudo systemctl status sshd.service确认服务处于 active (running) 状态。
7.3 验证监听端口
sudo netstat -tlnp | grep sshd
# 或
sudo ss -tlnp | grep sshd确认 sshd 正在监听默认端口 22。
7.4 新开 SSH 连接验证(关键)
务必新开一个终端(或新 SSH 会话)登录服务器,验证升级后的 SSH 能正常提供服务。
- 新连接能正常登录 → 升级成功,此时才可关闭旧会话;
- 新连接失败 → 立即返回旧会话,进入「回退」流程。
8、升级失败如何回退
如果升级后服务无法启动、或新 SSH 连接失败,通过保留的旧会话执行回退:
8.1 恢复备份配置
sudo cp /etc/ssh/sshd_configbak /etc/ssh/sshd_config
sudo systemctl restart sshd8.2 若配置恢复仍无效,回退软件版本
- .rpm 方式:找到旧版本 rpm 包,用
rpm -Uvh --oldpackage或rpm -e+ 重新安装旧包进行降级; - .run 方式:使用官方提供的旧版本
.run脚本重新安装,或从系统备份镜像恢复。
回退操作同样依赖当前仍可用的 SSH 会话,这再次印证了「升级前务必保留旧会话」的重要性。
9、常见问题 FAQ
Q1:.run 和 .rpm 到底怎么选?
A:看架构。x86_64 用 .run,aarch64 用 .rpm。用 uname -m 确认。
Q2:sudo sshd -t 报错怎么办?
A:该命令是校验 sshd_config 语法。根据报错提示修改 /etc/ssh/sshd_config 后再次执行,直到无输出为止,再重启服务。
Q3:重启 sshd 时提示需要 daemon-reload?
A:执行 systemctl daemon-reload 后,再重新执行 restart。这在银河麒麟(尤其 aarch64 版)上较常见,属正常现象。
Q4:升级后新 SSH 连不上了,怎么办?
A:不要慌,用升级前保留的旧 SSH 会话执行回退(恢复 sshd_configbak 配置或降级软件包)。这就是强调「不要关闭旧会话」的原因。
Q5:ssh -V 显示的版本没变化?
A:可能安装了多个 openssh 客户端,或命令路径不一致。尝试用 rpm -qa | grep openssh(rpm 方式)确认已安装版本,或 which ssh 查看命令路径。
Q6:升级会影响当前已登录的会话吗?
A:一般不会,已建立的连接在重启服务时通常保持,但绝不能依赖这一点——务必新开连接验证。
10、总结
| 步骤 | .run(x86_64) | .rpm(aarch64) |
|---|---|---|
| 重载配置 | systemctl daemon-reload | systemctl daemon-reload |
| 备份配置 | cp /etc/ssh/sshd_config /etc/ssh/sshd_configbak | cp /etc/ssh/sshd_config /etc/ssh/sshd_configbak |
| 进入目录 | cd 麒麟V10SP1-3-openssh-10.3p1/ | cd openssh9.9sp1-aarch64 |
| 安装 | chmod +x xxx.run && ./xxx.run | sudo rpm -Uvh openssh-*.rpm |
| 测试配置 | sudo sshd -t | sudo sshd -t |
| 重启服务 | systemctl restart sshd.service | systemctl restart sshd.service |
| 验证版本 | ssh -V | ssh -V |
核心要点回顾:
- 架构决定方式:x86_64 →
.run,aarch64 →.rpm; - 先备份再动手:
sshd_config配置必须提前备份; - 绝不断旧路:升级全程保留旧 SSH 会话,新开会话验证成功后再关闭;
- 验证三步走:
ssh -V看版本 →systemctl status看状态 → 新会话登录看连通; - 出问题能回退:恢复配置 / 降级包,全部依赖那条「活着的旧会话」。
📝 免责声明:升级 OpenSSH 属于系统底层服务变更,请在测试环境验证后再于生产环境执行,并务必做好配置与数据备份。本文仅供技术参考,因操作不当导致的损失由操作者自行承担。
评论 (0)