麒麟系统升级 OpenSSH 完整指南(.run 与 .rpm 两种方式)
麒麟系统升级 OpenSSH 完整指南(.run 与 .rpm 两种方式)
2026-09-01 0 评论 0 阅读 0 点赞

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

daimafengzi
2026-09-01 / 0 评论 / 0 阅读 / 正在检测是否收录...

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

mti3mb5g.png
mti3mxxd.png

适用系统:银河麒麟桌面版 / 麒麟 V10(服务器版 SP1~SP3)
升级目标:将系统自带的低版本 OpenSSH 升级到安全修复后的高版本
软件形态:本文覆盖 .run 自解压安装包(x86_64).rpm 软件包(aarch64) 两种升级方式

目录


一、为什么要升级 OpenSSH

OpenSSH 是 Linux/麒麟系统中最常用的远程登录与文件传输服务(sshdsshsftpscp)。系统自带的 OpenSSH 版本往往较低,存在已公开的安全漏洞(如命令注入、身份认证绕过、信息泄露等),在等保测评、安全扫描中常被判定为「高危漏洞」并要求整改。

通过升级到官方修复版本(如本文涉及的 OpenSSH 10.3p19.9sp1),可以:

  • 修复已知 CVE 安全漏洞,通过安全测评;
  • 提升加密算法的强度与兼容性;
  • 满足客户/监管对 SSH 版本的最低要求。

二、升级前必读(安全警告)

⚠️ 这条必须放在最前面,务必牢记:

请勿关闭当前的 SSH 连接!

升级 OpenSSH 会重启 sshd 服务。如果升级过程中出现问题(配置错误、版本不兼容、服务启动失败等),当前的 SSH 会话是你唯一的「后门」

正确的做法是:

  1. 保留当前 SSH 会话不关闭
  2. 升级并重启服务后,另开一个新的 SSH 连接进行验证;
  3. 只有当新连接能正常登录、且版本验证通过后,才考虑关闭旧会话;
  4. 如果新连接失败,立即用当前旧会话进行回退(恢复备份配置 / 降级包)。
简单记:「升级不留旧路,出事只能重装系统」

三、升级前的准备工作

3.1 查看系统架构

不同架构对应不同的安装包格式,先确认 CPU 架构:

uname -m
# 或者
arch
输出结果架构对应安装包
x86_64Intel / 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.runopenssh-*.rpm(多个 rpm 文件)
优缺点一键式、省心,官方封装更标准,可用 rpm -qa 查询管理
选择原则:看架构,不看喜好。x86_64 用 .run,aarch64 用 .rpm

五、方式一:.run 安装包(x86_64 架构)

适用于 Intel / AMD / 兆芯 / 海光 等 x86_64 架构的麒麟 V10 系统。

5.1 重载 systemd 配置

systemctl daemon-reload

5.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.run

5.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-reload

6.2 备份原 SSH 配置

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_configbak

6.3 进入 rpm 包目录

cd openssh9.9sp1-aarch64

6.4 升级安装(rpm -Uvh)

sudo rpm -Uvh openssh-*.rpm

参数说明:

  • -U:升级(Upgrade),若软件已安装则升级,未安装则安装;
  • -v:显示详细信息;
  • -h:显示安装进度条(#)。

openssh-*.rpm 通配符会一次性安装/升级目录下所有相关 rpm 包(openssh 主程序、客户端、服务端等)。

6.5 测试配置是否有误

sudo sshd -t

6.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 sshd

8.2 若配置恢复仍无效,回退软件版本

  • .rpm 方式:找到旧版本 rpm 包,用 rpm -Uvh --oldpackagerpm -e + 重新安装旧包进行降级;
  • .run 方式:使用官方提供的旧版本 .run 脚本重新安装,或从系统备份镜像恢复。
回退操作同样依赖当前仍可用的 SSH 会话,这再次印证了「升级前务必保留旧会话」的重要性。

9、常见问题 FAQ

Q1:.run.rpm 到底怎么选?
A:看架构。x86_64.runaarch64.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-reloadsystemctl daemon-reload
备份配置cp /etc/ssh/sshd_config /etc/ssh/sshd_configbakcp /etc/ssh/sshd_config /etc/ssh/sshd_configbak
进入目录cd 麒麟V10SP1-3-openssh-10.3p1/cd openssh9.9sp1-aarch64
安装chmod +x xxx.run && ./xxx.runsudo rpm -Uvh openssh-*.rpm
测试配置sudo sshd -tsudo sshd -t
重启服务systemctl restart sshd.servicesystemctl restart sshd.service
验证版本ssh -Vssh -V

核心要点回顾:

  1. 架构决定方式:x86_64 → .run,aarch64 → .rpm
  2. 先备份再动手sshd_config 配置必须提前备份;
  3. 绝不断旧路:升级全程保留旧 SSH 会话,新开会话验证成功后再关闭;
  4. 验证三步走ssh -V 看版本 → systemctl status 看状态 → 新会话登录看连通;
  5. 出问题能回退:恢复配置 / 降级包,全部依赖那条「活着的旧会话」。

📝 免责声明:升级 OpenSSH 属于系统底层服务变更,请在测试环境验证后再于生产环境执行,并务必做好配置与数据备份。本文仅供技术参考,因操作不当导致的损失由操作者自行承担。
0

评论 (0)

取消