CH-J Tools通过 SSH 管理服务器
菜单

用于后量子 SSH 密钥的 OpenSSH 10.6

下载文件

本译文正在进行语言审校。如有不明确之处,请对照英文原文。

只有当服务器运行 OpenSSH 10.6 或更新版本时,CH-J Tools 才能向该服务器添加后量子密钥类型 ssh-mldsa44-ed25519。OpenSSH 10.6(2026年10月6日)是首个支持此密钥类型标准化形式的版本。旧版本会拒绝这种形式。其中某些版本,例如 Ubuntu 26.04 中的 10.2p1,仅支持实验性的 …@openssh.com 变体,而 CH-J Tools 不使用该变体。

本文撰写时,Ubuntu 和 Debian 尚未通过 apt 提供 10.6。本指南将安装官方 OpenSSH 10.6p2(2026年11月5日发布,修复了未启用 PAM 的 Linux 构建中的密码认证绕过漏洞),使其与发行版的软件包并存,并将 ssh 服务指向此版本。

已在全新安装的 Ubuntu 26.04.1 LTS 上测试:安装、使用 ssh-mldsa44-ed25519 密钥登录、重启及回滚。

开始之前

脚本的工作流程

  1. 使用 apt 安装构建依赖项。
  2. 下载 openssh-10.6p2.tar.gz,核对预先固定的 SHA-256 值,并验证由 OpenSSH 发布密钥 7168 B983 815A 5EEF 59A4 ADFD 2A3F 414E 7360 60BA 生成的 OpenPGP 签名。
  3. 构建并安装到 /opt/openssh-10.6p2。您在 /etc/ssh 中的配置(主机密钥、sshd_config)及 PAM 配置保持不变。
  4. 使用新版本检查当前的 sshd_config,然后在 127.0.0.1:2226 上启动测试实例。只有两项检查均通过后,才会执行切换。
  5. 添加 systemd 补充配置文件 /etc/systemd/system/ssh.service.d/chj-openssh.conf,并禁用 ssh.socket,因为上游 sshd 不支持套接字激活。随后重启 ssh.service。
  6. 检查正在运行的进程是否为 /opt/openssh-10.6p2/sbin/sshd,且标识横幅是否为 SSH-2.0-OpenSSH_10.6。如果任一检查失败,脚本会自动回滚。

安装

curl -fsSLO https://tools.ch-j.de/files/tools/chj-openssh-10.6.sh
echo "cdf3031a0b64db3e3bf3c83d31bd746aee5505757b1af5e137750326ed8d7a01  chj-openssh-10.6.sh" | sha256sum -c -
less chj-openssh-10.6.sh          # read it before running it as root
sudo bash chj-openssh-10.6.sh install

然后打开一个新的 SSH 连接。确认新连接可以成功登录后,才能关闭旧会话。

检查与回滚

sudo bash chj-openssh-10.6.sh status     # running binary, ssh.socket, banner
sudo bash chj-openssh-10.6.sh rollback   # back to the distribution sshd

回滚会删除补充配置文件,在 ssh.socket 原先已启用的情况下重新启用它,并重启发行版的 sshd。/opt/openssh-10.6p2 中的构建版本会保留在磁盘上,直到您将其删除。回滚后,ssh-mldsa44-ed25519 密钥将无法再用于该服务器。

随后在 CH-J Tools 中操作

重新连接服务器。现在,您可以在 Users 中从 Keychain 添加 ssh-mldsa44-ed25519 密钥。如果服务器仍报告旧版本,CH-J Tools 会显示消息 "OpenSSH 10.6 or newer is required",并且不会添加密钥。