# 用於後量子 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 工作階段開啟**。最好同時具備主控台存取權限(Hypervisor、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",且不會新增金鑰。