麒麟操作系统(Kylin Linux V10)上将 OpenSSH 升级到最新版本
麒麟操作系统(Kylin Linux V10)上将 OpenSSH 升级到最新版本
·
在麒麟操作系统(Kylin Linux V10)上将 OpenSSH 升级到最新版本,是一项涉及系统底层安全的操作。由于麒麟系统分为 x86_64 和 ARM64(aarch64)两种架构,且升级过程中存在导致远程连接断开的风险,因此必须严格遵循规范流程。
以下是基于麒麟 V10 系统的完整升级实操指南:
🚨 升级前必读与准备(至关重要)
- 确认系统架构: 在终端输入
uname -m。如果返回x86_64则是普通PC/服务器架构;如果返回aarch64则是华为鲲鹏/飞腾等 ARM 架构。 - 开启 Telnet 备用通道(防失联): 升级 SSH 极大概率会导致当前连接中断或升级失败无法重连。务必先安装并开启 Telnet 服务作为保底通道。
开启后,建议先新开一个终端用 Telnet 登录测试,确保能连上后再继续后续操作。# 安装 telnet 服务 sudo yum install telnet-server telnet xinetd -y # 启动并设置开机自启 sudo systemctl enable --now telnet.socket # 检查 23 端口是否开启 sudo netstat -tlnp | grep 23 - 安装编译依赖:
sudo yum groupinstall -y "Development Tools" sudo yum install -y zlib-devel pam-devel openssl-devel perl-IPC-Cmd perl-Data-Dumper
📦 第一步:编译安装最新版 OpenSSL
OpenSSH 的最新版通常依赖较新的 OpenSSL 库,因此必须先升级 OpenSSL。以下以当前较新的 OpenSSL 3.5.6 为例:
- 下载并解压源码:
wget https://www.openssl.org/source/openssl-3.5.6.tar.gz tar -xzf openssl-3.5.6.tar.gz cd openssl-3.5.6 - 配置编译参数: 如果是 ARM64 (aarch64) 架构,必须指定
linux-aarch64,否则会崩溃。# x86_64 架构使用 ./config,aarch64 架构使用 ./Configure linux-aarch64 ./config --prefix=/usr/local/openssl-3.5.6 --openssldir=/usr/local/openssl-3.5.6 shared - 编译与安装:
make -j$(nproc) sudo make install - 更新动态链接库:
echo "/usr/local/openssl-3.5.6/lib64" | sudo tee /etc/ld.so.conf.d/openssl-3.5.6.conf sudo ldconfig # 验证 OpenSSL 版本 /usr/local/openssl-3.5.6/bin/openssl version
🔧 第二步:编译安装最新版 OpenSSH
以当前较新的 OpenSSH 10.0p2 为例(如需 10.3p1 等更新版本,替换版本号即可):
- 下载并解压源码:
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-10.0p2.tar.gz tar -xzf openssh-10.0p2.tar.gz cd openssh-10.0p2 - 配置编译参数: 注意将
--with-ssl-dir指向刚才编译好的 OpenSSL 路径。./configure \ --prefix=/usr \ --sysconfdir=/etc/ssh \ --with-pam \ --with-zlib \ --with-ssl-dir=/usr/local/openssl-3.5.6 \ --with-md5-passwords \ --with-privsep-path=/var/lib/sshd - 编译与安装:
make -j$(nproc) # 修复主机密钥权限(必须为 600,否则服务无法启动) sudo chmod 600 /etc/ssh/ssh_host_*_key sudo make install
⚙️ 第三步:服务配置与启动
- 移除不兼容的旧配置: OpenSSH 10.0 及以上版本已移除对 GSSAPI 的支持,必须从配置文件中删除相关项,否则服务会启动失败。
sudo sed -i '/^GSSAPIAuthentication/d' /etc/ssh/sshd_config sudo sed -i '/^GSSAPICleanupCredentials/d' /etc/ssh/sshd_config - 允许 Root 登录(按需配置):
echo 'PermitRootLogin yes' | sudo tee -a /etc/ssh/sshd_config echo 'UsePAM yes' | sudo tee -a /etc/ssh/sshd_config - 重载并启动 SSHD 服务:
sudo systemctl daemon-reload sudo systemctl restart sshd sudo systemctl enable sshd - 验证版本:
ssh -V # 预期输出类似:OpenSSH_10.0p2, OpenSSL 3.5.6 1 Jul 2025
🚨 常见问题与回滚方案
- 服务启动失败(Unit not found 或 key generation failed): 通常是权限或密钥问题。尝试手动生成密钥并修复权限:
sudo ssh-keygen -A sudo mkdir -p /var/empty/sshd sudo chmod 755 /var/empty/sshd sudo chown root:root /var/empty/sshd sudo systemctl restart sshd - 升级失败回滚: 如果 SSH 彻底挂了,通过 Telnet 登录,执行以下命令恢复系统自带的旧版 SSH:
sudo yum reinstall -y openssh openssh-server openssh-clients sudo systemctl restart sshd
最后提醒:升级完成并测试 SSH 连接完全正常后,为了系统安全,请务必关闭 Telnet 服务(sudo systemctl disable --now telnet.socket)。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)