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",且不會新增金鑰。