# ポスト量子 SSH 鍵のための OpenSSH 10.6 CH-J Tools でポスト量子鍵タイプ `ssh-mldsa44-ed25519` の鍵をサーバーに追加するには、そのサーバーで **OpenSSH 10.6 以降**が動作している必要があります。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)を確認し、新しいリリースで手順を繰り返すか、ロールバックしてください。 - 作業中は常に**2つ目の 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」と表示し、鍵を追加しません。