只有當伺服器執行 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 版本資訊,並使用更新版本重複此程序,或還原至原本的版本。 - 在整個操作過程中保持第二個 SSH 工作階段開啟。最好同時具備主控台存取權限(Hypervisor、IPMI、雲端主控台)。
- 請先在測試機器上試用。
- 您需要 root 權限、systemd、
/var/tmp中約 1 GiB 的可用空間,以及供apt和下載 OpenSSH 使用的網際網路連線。
指令碼的運作流程
- 使用
apt安裝建置相依套件。 - 下載
openssh-10.6p2.tar.gz,核對預先固定的 SHA-256 值,並驗證由 OpenSSH 發布金鑰7168 B983 815A 5EEF 59A4 ADFD 2A3F 414E 7360 60BA產生的 OpenPGP 簽章。 - 建置並安裝至
/opt/openssh-10.6p2。您在/etc/ssh中的設定(主機金鑰、sshd_config)及 PAM 設定維持不變。 - 使用新版本檢查目前的
sshd_config,然後在127.0.0.1:2226上啟動測試執行個體。只有兩項檢查皆通過後,才會進行切換。 - 新增 systemd 補充設定檔
/etc/systemd/system/ssh.service.d/chj-openssh.conf,並停用ssh.socket,因為上游 sshd 不支援通訊端啟動。接著重新啟動ssh.service。 - 檢查正在執行的程序是否為
/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",且不會新增金鑰。