# 用于后量子 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` 密钥登录、重启及回滚。 ## 开始之前 - **此构建版本需要由您自行维护。** `apt upgrade` 不会为其提供安全修复。请关注 [OpenSSH 发行说明](https://www.openssh.com/releasenotes.html),并使用更新版本重复此流程,或执行回滚。 - 在整个操作过程中保持**第二个 SSH 会话处于打开状态**。最好同时具备控制台访问权限(虚拟机监控程序、IPMI、云控制台)。 - 请先在测试机器上试用。 - 您需要 root 权限、systemd、`/var/tmp` 中约 1 GiB 的可用空间,以及供 `apt` 和下载 OpenSSH 使用的互联网连接。 ## 脚本的工作流程 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`。如果任一检查失败,脚本会自动回滚。 ## 安装 ```bash 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 连接。确认新连接可以成功登录后,才能关闭旧会话。 ## 检查与回滚 ```bash 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",并且不会添加密钥。