はじめに
量子コンピュータの発展により、現在広く使われている公開鍵暗号の一部が、将来的に影響を受ける可能性があると言われています。
現在の SSH では、RSA などの公開鍵暗号、ECDSA などの署名方式、ECDH などの鍵交換方式が使われています。十分な規模の量子コンピュータが実用化された場合、これらはいずれも Shor のアルゴリズムによって安全性が大きく低下する可能性があります。
本記事では、その中でも SSH 接続開始時に使われる KEX(Key Exchange / 鍵交換)を確認します。
こうした背景から、OpenSSH でも、まずは SSH 接続開始時の鍵交換を対象として、耐量子暗号を組み合わせたハイブリッド方式への対応が進められています。代表的なものとして、NTRU Prime 系の sntrup761x25519-sha512@openssh.com や、NIST 標準の ML-KEM を用いた mlkem768x25519-sha256 などのハイブリッド鍵交換方式があります。
今回、AIX 7.3.3.1、AIX 7.3.3.2、AIX 7.3.4.0 の環境で OpenSSH の対応状況を確認したところ、少なくとも今回確認した範囲では、ML-KEM 対応の有無は AIX の TL/SP 表記だけでは判断できず、導入されている OpenSSH fileset のバージョン確認が重要であることが分かりました。
本記事では、実機の確認結果をもとに、AIX 環境における OpenSSH の耐量子ハイブリッド KEX 対応状況を整理します。
- AIX 7.3.3.1 / 7.3.3.2 / 7.3.4.0 における OpenSSH の差分
-
mlkem768x25519-sha256が利用できる条件 -
ssh -Q kex/sshd -T/ssh -vvvによる確認方法 - 耐量子対応といっても、対象は主に SSH の鍵交換であること
- 運用環境で KEX を変更する際の注意点
動画
当記事の動画を作成しています。理解の一助にご参考ください。
確認環境
今回確認した環境は以下の通りです。
| 環境 | oslevel -s | OpenSSH fileset | ssh -V | ML-KEM |
|---|---|---|---|---|
| AIX 7.3.3.1 | 7300-03-01-2520 |
9.7.3013.1000 |
OpenSSH_9.7p1 |
非対応 |
| AIX 7.3.3.2 | 7300-03-02-2546 |
9.9.3015.2000 |
OpenSSH_9.9p2 |
対応 |
| AIX 7.3.4.0 | 7300-04-00-2546 |
9.9.3015.2000 |
OpenSSH_9.9p2 |
対応 |
今回の確認結果から、mlkem768x25519-sha256 の対応有無は、AIX の TL/SP 表記だけでなく、OpenSSH fileset のレベルを確認する必要があることが分かります。
特に、AIX 7.3.3 系でも 7300-03-02-2546(7.3.3.2)の環境では OpenSSH fileset が 9.9.3015.2000 となっており、AIX 7.3.4.0 と同じく mlkem768x25519-sha256 が利用可能でした。
AIX 7.3.4 のリリースノートには、OpenSSH fileset の更新について以下のように記載されています。
OpenSSH ファイルセットは、オープンソースコミュニティ 9.9p2 リリースに更新され、AIX に VRMF 9.9.3015.2000 が含まれています。OpenSSH ファイルセットには、SSH サーバー用の FIDO 鍵のサポートが含まれています。OpenSSH の上位バージョン(10.0p2 リリースを含む)で報告されたすべての脆弱性は、このファイルセットにバックポートされています。
なお、今回の実機では ssh -V の結果として OpenSSL 3.0.16 が表示されました。IBM Docs の記載や導入済み fileset の組み合わせによって見え方が異なる可能性があるため、実環境では ssh -V と lslpp -l | grep openssh の両方で確認するのが確実です。
耐量子ハイブリッド KEX とは?
KEX(Key Exchange)とは、SSH 接続時にクライアントとサーバーが安全にセッション鍵を共有するための鍵交換アルゴリズムです。
SSH の通信では、最初に KEX によって共有秘密を作成し、その後の通信で使用する共通鍵を導出します。そのため、KEX は SSH の暗号通信を支える重要な要素です。
OpenSSH では、耐量子暗号への移行を見据えて、従来の鍵交換方式と耐量子暗号を組み合わせた ハイブリッド鍵交換 が導入されています。
ハイブリッド方式とは、量子コンピュータ耐性を持つ新しいアルゴリズムと、従来から広く使われている X25519 などのアルゴリズムを組み合わせる方式です。これにより、新しいアルゴリズムだけに依存せず、従来方式の安全性も併用できます。
重要なのは、ここでいう耐量子対応は主に SSH 接続開始時の鍵交換 を対象としている点です。ホスト鍵、ユーザー認証鍵、通信暗号方式まで含めて SSH 全体が完全に耐量子化されたという意味ではありません。
sntrup761x25519-sha512
sntrup761x25519-sha512 は、NTRU Prime 系の耐量子アルゴリズムと、従来の X25519 を組み合わせたハイブリッド鍵交換方式です。
OpenSSH では以前から post-quantum key agreement として導入されており、OpenSSH 9.0 以降ではデフォルトの鍵交換候補として使われるようになっています。
今回の実機確認では、AIX 7.3.3.1(OpenSSH 9.7)では sntrup761x25519-sha512@openssh.com(OpenSSH 独自名称)のみ対応しており、sntrup761x25519-sha512(@openssh.com なし)は含まれていませんでした。両方が利用可能になったのは、fileset が 9.9.3015.2000 に更新された 7.3.3.2 以降です。
mlkem768x25519-sha256
mlkem768x25519-sha256 は、NIST が FIPS 203 として標準化した ML-KEM と、従来の X25519 を組み合わせたハイブリッド鍵交換方式です。
OpenSSH 9.9 で追加された方式であり、AIX では OpenSSH fileset 9.9.3015.2000(今回確認した 7.3.3.2 / 7.3.4.0)で利用可能であることを確認しました。
AIX / IBM Power 環境で OpenSSH 9.9p2 に注目
OpenSSH 9.9 では、ML-KEM と X25519 を組み合わせたハイブリッド鍵交換方式である mlkem768x25519-sha256 が追加されました。
一方で、AIX on IBM Power 環境では、OpenSSH 9.9 系であることに加えて、OpenSSH 9.9p2 相当の修正が含まれているかも重要な確認ポイントになります。
OpenSSH 9.9p2 リリースノートによると、9.9p2 では ssh(1)、sshd(8)、ssh-keyscan(1) において、big-endian システム上の mlkem768x25519-sha256 鍵交換に関する修正が含まれています。
IBM Power 環境では big-endian 構成の AIX を利用するケースがあるため、ML-KEM を確認する場合は、単に OpenSSH 9.9 系であることだけでなく、ssh -V で OpenSSH_9.9p2 と表示されること、また導入されている OpenSSH fileset が 9.9.3015.2000 であることを確認するのが重要です。
今回確認した AIX 7.3.3.2 / 7.3.4.0 環境では、いずれも OpenSSH fileset が 9.9.3015.2000、ssh -V が OpenSSH_9.9p2 であり、mlkem768x25519-sha256 が利用可能でした。
公式リリースノートから読み取れるのは、OpenSSH 9.9p2 で big-endian システム向けの ML-KEM 鍵交換修正が入っている、という点です。そのため、big-endian 環境で ML-KEM を評価する場合は、OpenSSH 9.9p2 相当の修正を含む実装で確認することが望ましいと考えられます。
実機で確認した対応状況の比較
PQC / ハイブリッド KEX の確認
AIX 7.3.3.1(OpenSSH 9.7)では、sntrup761x25519-sha512@openssh.com のみ確認できました。
# AIX 7.3.3.1(OpenSSH 9.7)
# ssh -Q kex | grep -E 'mlkem|sntrup'
sntrup761x25519-sha512@openssh.com
AIX 7.3.3.2 / 7.3.4.0(OpenSSH 9.9)では、mlkem768x25519-sha256 が確認できました。
# AIX 7.3.3.2 / 7.3.4.0(OpenSSH 9.9)
# ssh -Q kex | grep -E 'mlkem|sntrup'
sntrup761x25519-sha512
sntrup761x25519-sha512@openssh.com
mlkem768x25519-sha256
FIDO 鍵とは?
FIDO 鍵とは、YubiKey などの外部セキュリティキーを利用した認証方式です。OpenSSH では、FIDO/U2F に対応したセキュリティキーを SSH の公開鍵認証に利用できます。
通常の SSH 公開鍵認証では、秘密鍵ファイルをクライアント端末上に保存します。一方、FIDO 鍵を利用する場合、秘密鍵に相当する重要な情報はセキュリティキー側で保護されます。そのため、秘密鍵ファイルの漏えいリスクを低減しやすいという特徴があります。
OpenSSH では、FIDO 対応の鍵種別として主に以下が使われます。
| 鍵種別 | 概要 |
|---|---|
sk-ssh-ed25519@openssh.com |
Ed25519 ベースの FIDO セキュリティキー認証 |
sk-ecdsa-sha2-nistp256@openssh.com |
ECDSA NIST P-256 ベースの FIDO セキュリティキー認証 |
ここでの sk は security key を意味します。
FIDO 鍵を使うと、SSH 接続時にセキュリティキーへのタッチ操作を要求できます。これにより、秘密鍵ファイルだけを盗まれても、物理的なセキュリティキーがなければ認証を完了しにくくなります。
ただし、FIDO 鍵は SSH のユーザー認証を強化する仕組み であり、ML-KEM や sntrup761x25519 のような 鍵交換アルゴリズムの耐量子対応とは別の話 です。
つまり、今回の記事で扱っている要素を分けると、以下のようになります。
| 要素 | 目的 | 今回の確認ポイント |
|---|---|---|
| KEX | セッション鍵を安全に共有する |
mlkem768x25519-sha256 が利用できるか |
| FIDO 鍵 | SSH ログイン時のユーザー認証を強化する |
sk-* 鍵種別が利用できるか |
| Cipher | 通信データを暗号化する |
aes128-ctr や chacha20-poly1305@openssh.com など |
| Host key | 接続先サーバーを認証する |
rsa-sha2-512 など |
なお、FIDO 鍵を実際に利用するには、サーバー側の対応だけでなく、クライアント側の OpenSSH、利用するセキュリティキー、OS 側の USB / HID デバイス利用可否なども関係します。そのため、AIX 側で sk-* が表示されることは対応確認の一部であり、実運用ではクライアント端末から実際に鍵作成・ログインできることまで確認する必要があります。
FIDO 鍵の確認
AIX 7.3.3.1(OpenSSH 9.7)では、FIDO 鍵は確認できませんでした。
# AIX 7.3.3.1(OpenSSH 9.7)
# ssh -Q key | grep sk
# 出力なし
AIX 7.3.3.2 / 7.3.4.0(OpenSSH 9.9)では、FIDO 鍵が確認できました。
# AIX 7.3.3.2 / 7.3.4.0(OpenSSH 9.9)
# ssh -Q key | grep sk
sk-ssh-ed25519@openssh.com
sk-ssh-ed25519-cert-v01@openssh.com
sk-ecdsa-sha2-nistp256@openssh.com
sk-ecdsa-sha2-nistp256-cert-v01@openssh.com
OpenSSH fileset バージョン別の対応まとめ
| 項目 | 9.7系(7.3.3.1) | 9.9系(7.3.3.2 / 7.3.4.0) |
|---|---|---|
| OpenSSH fileset | 9.7.3013.1000 |
9.9.3015.2000 |
| OpenSSH バージョン | OpenSSH_9.7p1 |
OpenSSH_9.9p2 |
| OpenSSL バージョン | 3.0.15 |
3.0.16 |
sntrup761x25519-sha512@openssh.com |
対応 | 対応 |
sntrup761x25519-sha512 |
非対応 | 対応 |
mlkem768x25519-sha256 |
非対応 | 対応 |
| FIDO 鍵(sk-*)対応 | 非対応 | 対応 |
ssh-dss 鍵サポート |
対応(レガシー) | 非対応 |
| sshd デフォルト cipher 先頭 | chacha20-poly1305@openssh.com |
aes128-ctr |
| persourcepenalties(接続元ペナルティ) | 非対応 | 対応 |
| OpenSSH 10.0p2 までの脆弱性バックポート | 非対応 | 対応 |
ML-KEM を明示指定して接続する(9.9 系での確認)
macOS クライアントから、KEX アルゴリズムとして mlkem768x25519-sha256 を明示的に指定して接続します。
ssh -vvv -o KexAlgorithms=mlkem768x25519-sha256 root@<AIXサーバーIP>
デバッグログの要所を抜粋して確認します。
debug1: kex: algorithm: mlkem768x25519-sha256
debug1: kex: host key algorithm: rsa-sha2-512
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
kex: algorithm: mlkem768x25519-sha256 が表示されているため、ML-KEM と X25519 を組み合わせたハイブリッド鍵交換が成立していることが分かります。
なお、ここで確認しているのは 鍵交換アルゴリズム です。host key algorithm、cipher、MAC はそれぞれ別の要素です。
| ログ項目 | 意味 |
|---|---|
kex: algorithm |
セッション鍵を安全に共有するための鍵交換方式 |
host key algorithm |
接続先サーバーを認証するためのホスト鍵方式 |
cipher |
実際の通信データを暗号化する方式 |
MAC |
メッセージ改ざん検知方式。AEAD 暗号では <implicit> と表示される |
そのため、mlkem768x25519-sha256 が使われたからといって、SSH 全体がすべて耐量子化されたという意味ではありません。あくまで、SSH 接続開始時の鍵交換に ML-KEM ハイブリッド方式が使われた、という意味です。
接続ログ全文(クリックで展開)
$ ssh -vvv -o KexAlgorithms=mlkem768x25519-sha256 root@xx.xxx.xx.xxx
debug1: OpenSSH_10.2p1, LibreSSL 3.3.6
debug3: Running on Darwin 25.3.0 Darwin Kernel Version 25.3.0: Wed Jan 28 20:54:46 PST 2026; root:xnu-12377.91.3~2/RELEASE_ARM64_T6000 arm64
debug3: Started with: ssh -vvv -o KexAlgorithms=mlkem768x25519-sha256 root@xx.xxx.xx.xxx
debug1: Reading configuration data /Users/xxx/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug2: resolve_canonicalize: hostname xx.xxx.xx.xxx is address
debug1: Connecting to xx.xxx.xx.xxx [xx.xxx.xx.xxx] port 22.
debug1: Connection established.
debug1: Local version string SSH-2.0-OpenSSH_10.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_9.9
debug2: local client KEXINIT proposal
debug2: KEX algorithms: mlkem768x25519-sha256,ext-info-c,kex-strict-c-v00@openssh.com
debug2: peer server KEXINIT proposal
debug2: KEX algorithms: sntrup761x25519-sha512,sntrup761x25519-sha512@openssh.com,mlkem768x25519-sha256,curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,ext-info-s,kex-strict-s-v00@openssh.com
debug3: kex_choose_conf: will use strict KEX ordering
debug1: kex: algorithm: mlkem768x25519-sha256
debug1: kex: host key algorithm: rsa-sha2-512
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: SSH2_MSG_KEX_ECDH_REPLY received
debug1: Server host key: ssh-rsa SHA256:73sts9F9mi3QcaNdsOAE/rnFaVtIMCVRYNNkPT6hCmM
debug1: Host 'xx.xxx.xx.xxx' is known and matches the RSA host key.
debug1: SSH2_MSG_NEWKEYS sent
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_ext_info_client_parse: server-sig-algs=<ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,rsa-sha2-512,rsa-sha2-256>
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Next authentication method: password
root@xx.xxx.xx.xxx's password:
sshd のデフォルト暗号スイート整理
sshd -T コマンドで sshd の有効な設定を確認できます。注目のパラメータを抜粋します。
# sshd -T | grep -E 'kexalgorithms|ciphers|macs|hostkeyalgorithms|pubkeyacceptedalgorithms'
KEX アルゴリズム
9.7 系と 9.9 系では、sshd -T で確認できるデフォルトの KEX 設定に差があります。
9.7 系(AIX 7.3.3.1):
kexalgorithms sntrup761x25519-sha512@openssh.com,
curve25519-sha256,
curve25519-sha256@libssh.org,
ecdh-sha2-nistp256,
ecdh-sha2-nistp384,
ecdh-sha2-nistp521,
diffie-hellman-group-exchange-sha256,
diffie-hellman-group16-sha512,
diffie-hellman-group18-sha512,
diffie-hellman-group14-sha256
9.9 系(AIX 7.3.3.2 / 7.3.4.0):
kexalgorithms sntrup761x25519-sha512,
sntrup761x25519-sha512@openssh.com,
mlkem768x25519-sha256,
curve25519-sha256,
curve25519-sha256@libssh.org,
ecdh-sha2-nistp256,
ecdh-sha2-nistp384,
ecdh-sha2-nistp521,
diffie-hellman-group-exchange-sha256,
diffie-hellman-group16-sha512,
diffie-hellman-group18-sha512,
diffie-hellman-group14-sha256
9.9 系のデフォルト設定では、sntrup761x25519-sha512 系が優先され、その後に mlkem768x25519-sha256 が続いています。ML-KEM を必ず使用したい場合は、クライアント側で KexAlgorithms=mlkem768x25519-sha256 を明示するか、サーバー側の KexAlgorithms の優先順位を変更する必要があります。
ただし、運用環境では古い SSH クライアントとの互換性も考慮する必要があります。KEX を一括で制限する前に、まずは接続元クライアントの対応状況を確認するのが安全です。
暗号アルゴリズム(Cipher)
デフォルトの cipher 順序にも差があります。
9.7 系: chacha20-poly1305@openssh.com が先頭
ciphers chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,
aes128-gcm@openssh.com,aes256-gcm@openssh.com
9.9 系: aes128-ctr が先頭
ciphers aes128-ctr,aes192-ctr,aes256-ctr,chacha20-poly1305@openssh.com,
aes128-gcm@openssh.com,aes256-gcm@openssh.com
いずれも 3des-cbc や aes128-cbc などレガシーな CBC モード暗号はデフォルトから除外されており、安全寄りの構成になっています。
MAC アルゴリズム
9.7 系・9.9 系ともに同じ設定です。
macs umac-64-etm@openssh.com,umac-128-etm@openssh.com,
hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,
hmac-sha1-etm@openssh.com,...
-etm(Encrypt-then-MAC)方式が優先されており、現代的な構成です。
ご参考:実機確認ログ全文
以下は、AIX 7.3.3.1、AIX 7.3.3.2、AIX 7.3.4.0 で取得した sshd -T / ssh -Q の確認ログ全文です。
本文中では要点のみ抜粋していますが、実際の差分確認や再現確認に利用できるよう、取得ログも残しておきます。
AIX 7.3.3.1(OpenSSH 9.7)— sshd -T / ssh -Q コマンドログ全文(クリックで展開)
# oslevel -s
7300-03-01-2520
# ssh -V
OpenSSH_9.7p1, OpenSSL 3.0.15 3 Sep 2024
# lslpp -l | grep openssh
openssh.base.client 9.7.3013.1000 COMMITTED Open Secure Shell Commands
openssh.base.server 9.7.3013.1000 COMMITTED Open Secure Shell Server
openssh.man.en_US 9.7.3013.1000 COMMITTED Open Secure Shell
# sshd -T
port 22
addressfamily any
listenaddress [::]:22
listenaddress 0.0.0.0:22
usepam no
logingracetime 120
x11displayoffset 10
maxauthtries 6
maxsessions 10
clientaliveinterval 0
clientalivecountmax 3
requiredrsasize 1024
streamlocalbindmask 0177
unusedconnectiontimeout none
permitrootlogin yes
ignorerhosts yes
ignoreuserknownhosts no
hostbasedauthentication no
hostbasedusesnamefrompacketonly no
pubkeyauthentication yes
kerberosauthentication no
kerberosorlocalpasswd yes
kerberosticketcleanup yes
gssapiauthentication no
gssapicleanupcredentials yes
gssapikeyexchange no
gssapistrictacceptorcheck yes
gssapistorecredentialsonrekey no
gssapikexalgorithms gss-group14-sha1-,gss-group14-sha256-,gss-group16-sha512-,gss-nistp256-sha256-,gss-curve25519-sha256-,gss-gex-sha1-
passwordauthentication yes
displaypatchversion no
kbdinteractiveauthentication yes
printmotd yes
x11forwarding no
x11uselocalhost yes
permittty yes
permituserrc yes
strictmodes yes
tcpkeepalive yes
permitemptypasswords no
compression yes
enablehwcompression yes
gatewayports no
usedns no
allowtcpforwarding yes
allowagentforwarding yes
disableforwarding no
allowstreamlocalforwarding yes
streamlocalbindunlink no
fingerprinthash SHA256
exposeauthinfo no
pidfile /var/run/sshd.pid
modulifile /etc/ssh/moduli
xauthlocation /usr/bin/X11/xauth
ciphers chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
macs umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
banner none
forcecommand none
chrootdirectory none
trustedusercakeys none
revokedkeys none
securitykeyprovider internal
authorizedprincipalsfile none
versionaddendum none
authorizedkeyscommand none
authorizedkeyscommanduser none
authorizedprincipalscommand none
authorizedprincipalscommanduser none
hostkeyagent none
kexalgorithms sntrup761x25519-sha512@openssh.com,curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256
casignaturealgorithms ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,rsa-sha2-512,rsa-sha2-256
hostbasedacceptedalgorithms ssh-ed25519-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,rsa-sha2-512,rsa-sha2-256
hostkeyalgorithms ssh-ed25519-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,rsa-sha2-512,rsa-sha2-256
pubkeyacceptedalgorithms ssh-ed25519-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,rsa-sha2-512,rsa-sha2-256
loglevel INFO
syslogfacility AUTH
authorizedkeysfile .ssh/authorized_keys
hostkey /etc/ssh/ssh_host_rsa_key
hostkey /etc/ssh/ssh_host_ecdsa_key
hostkey /etc/ssh/ssh_host_ed25519_key
authenticationmethods any
channeltimeout none
subsystem sftp /usr/sbin/sftp-server
maxstartups 10:30:100
persourcemaxstartups none
persourcenetblocksize 32:128
permittunnel no
ipqos af21 cs1
rekeylimit 0 0
permitopen any
permitlisten any
permituserenvironment no
pubkeyauthoptions none
# echo "### KEX"
### KEX
# ssh -Q kex
diffie-hellman-group1-sha1
diffie-hellman-group14-sha1
diffie-hellman-group14-sha256
diffie-hellman-group16-sha512
diffie-hellman-group18-sha512
diffie-hellman-group-exchange-sha1
diffie-hellman-group-exchange-sha256
ecdh-sha2-nistp256
ecdh-sha2-nistp384
ecdh-sha2-nistp521
curve25519-sha256
curve25519-sha256@libssh.org
sntrup761x25519-sha512@openssh.com
# echo "### Cipher"
### Cipher
# ssh -Q cipher
3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
aes128-ctr
aes192-ctr
aes256-ctr
aes128-gcm@openssh.com
aes256-gcm@openssh.com
chacha20-poly1305@openssh.com
# echo "### MAC"
### MAC
# ssh -Q mac
hmac-sha1
hmac-sha1-96
hmac-sha2-256
hmac-sha2-512
hmac-md5
hmac-md5-96
umac-64@openssh.com
umac-128@openssh.com
hmac-sha1-etm@openssh.com
hmac-sha1-96-etm@openssh.com
hmac-sha2-256-etm@openssh.com
hmac-sha2-512-etm@openssh.com
hmac-md5-etm@openssh.com
hmac-md5-96-etm@openssh.com
umac-64-etm@openssh.com
umac-128-etm@openssh.com
# echo "### Key"
### Key
# ssh -Q key
ssh-ed25519
ssh-ed25519-cert-v01@openssh.com
ecdsa-sha2-nistp256
ecdsa-sha2-nistp256-cert-v01@openssh.com
ecdsa-sha2-nistp384
ecdsa-sha2-nistp384-cert-v01@openssh.com
ecdsa-sha2-nistp521
ecdsa-sha2-nistp521-cert-v01@openssh.com
ssh-dss
ssh-dss-cert-v01@openssh.com
ssh-rsa
ssh-rsa-cert-v01@openssh.com
# echo "### Signature"
### Signature
# ssh -Q sig
ssh-ed25519
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
ssh-dss
ssh-rsa
rsa-sha2-256
rsa-sha2-512
# echo "### PQ / hybrid KEX"
### PQ / hybrid KEX
# ssh -Q kex | grep -E 'mlkem|sntrup'
sntrup761x25519-sha512@openssh.com
# echo "### FIDO keys"
### FIDO keys
# ssh -Q key | grep sk
(出力なし)
# echo "### RSA SHA2 signatures"
### RSA SHA2 signatures
# ssh -Q sig | grep rsa-sha2
rsa-sha2-256
rsa-sha2-512
AIX 7.3.3.2(OpenSSH 9.9)— sshd -T / ssh -Q コマンドログ全文(クリックで展開)
# oslevel -s
7300-03-02-2546
# ssh -V
OpenSSH_9.9p2, OpenSSL 3.0.16 11 Feb 2025
# lslpp -l | grep openssh
openssh.base.client 9.9.3015.2000 COMMITTED Open Secure Shell Commands
openssh.base.server 9.9.3015.2000 COMMITTED Open Secure Shell Server
openssh.man.en_US 9.9.3015.2000 COMMITTED Open Secure Shell
# sshd -T
port 22
addressfamily any
listenaddress [::]:22
listenaddress 0.0.0.0:22
usepam no
pamservicename sshd
logingracetime 120
x11displayoffset 10
maxauthtries 6
maxsessions 10
clientaliveinterval 0
clientalivecountmax 3
requiredrsasize 1024
streamlocalbindmask 0177
unusedconnectiontimeout none
permitrootlogin yes
ignorerhosts yes
ignoreuserknownhosts no
hostbasedauthentication no
hostbasedusesnamefrompacketonly no
pubkeyauthentication yes
kerberosauthentication no
kerberosorlocalpasswd yes
kerberosticketcleanup yes
gssapiauthentication no
gssapicleanupcredentials yes
gssapikeyexchange no
gssapistrictacceptorcheck yes
gssapistorecredentialsonrekey no
gssapikexalgorithms gss-group14-sha1-,gss-group14-sha256-,gss-group16-sha512-,gss-nistp256-sha256-,gss-curve25519-sha256-,gss-gex-sha1-
passwordauthentication yes
displaypatchversion no
kbdinteractiveauthentication yes
printmotd yes
x11forwarding no
x11uselocalhost yes
permittty yes
permituserrc yes
strictmodes yes
tcpkeepalive yes
permitemptypasswords no
compression yes
enablehwcompression yes
gatewayports no
usedns no
allowtcpforwarding yes
allowagentforwarding yes
disableforwarding no
allowstreamlocalforwarding yes
streamlocalbindunlink no
fingerprinthash SHA256
exposeauthinfo no
refuseconnection no
pidfile /var/run/sshd.pid
modulifile /etc/ssh/moduli
xauthlocation /usr/bin/X11/xauth
ciphers aes128-ctr,aes192-ctr,aes256-ctr,chacha20-poly1305@openssh.com,aes128-gcm@openssh.com,aes256-gcm@openssh.com
macs umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
banner none
forcecommand none
chrootdirectory none
trustedusercakeys none
revokedkeys none
securitykeyprovider internal
authorizedprincipalsfile none
versionaddendum none
authorizedkeyscommand none
authorizedkeyscommanduser none
authorizedprincipalscommand none
authorizedprincipalscommanduser none
hostkeyagent none
kexalgorithms sntrup761x25519-sha512,sntrup761x25519-sha512@openssh.com,mlkem768x25519-sha256,curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256
casignaturealgorithms ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,rsa-sha2-512,rsa-sha2-256
hostbasedacceptedalgorithms ssh-ed25519-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,rsa-sha2-512,rsa-sha2-256
hostkeyalgorithms ssh-ed25519-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,rsa-sha2-512,rsa-sha2-256
pubkeyacceptedalgorithms ssh-ed25519-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,rsa-sha2-512,rsa-sha2-256
sshdsessionpath //usr/sbin/sshd-session
persourcepenaltyexemptlist none
loglevel INFO
syslogfacility AUTH
authorizedkeysfile .ssh/authorized_keys
hostkey /etc/ssh/ssh_host_rsa_key
hostkey /etc/ssh/ssh_host_ecdsa_key
hostkey /etc/ssh/ssh_host_ed25519_key
authenticationmethods any
channeltimeout none
subsystem sftp /usr/sbin/sftp-server
maxstartups 10:30:100
persourcemaxstartups none
persourcenetblocksize 32:128
permittunnel no
ipqos af21 cs1
rekeylimit 0 0
permitopen any
permitlisten any
permituserenvironment no
pubkeyauthoptions none
persourcepenalties crash:90 authfail:5 noauth:1 grace-exceeded:10 refuseconnection:10 max:600 min:15 max-sources4:65536 max-sources6:65536 overflow:permissive overflow6:permissive
# echo "### KEX"
### KEX
# ssh -Q kex
diffie-hellman-group1-sha1
diffie-hellman-group14-sha1
diffie-hellman-group14-sha256
diffie-hellman-group16-sha512
diffie-hellman-group18-sha512
diffie-hellman-group-exchange-sha1
diffie-hellman-group-exchange-sha256
ecdh-sha2-nistp256
ecdh-sha2-nistp384
ecdh-sha2-nistp521
curve25519-sha256
curve25519-sha256@libssh.org
sntrup761x25519-sha512
sntrup761x25519-sha512@openssh.com
mlkem768x25519-sha256
# echo "### Cipher"
### Cipher
# ssh -Q cipher
3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
aes128-ctr
aes192-ctr
aes256-ctr
aes128-gcm@openssh.com
aes256-gcm@openssh.com
chacha20-poly1305@openssh.com
# echo "### MAC"
### MAC
# ssh -Q mac
hmac-sha1
hmac-sha1-96
hmac-sha2-256
hmac-sha2-512
hmac-md5
hmac-md5-96
umac-64@openssh.com
umac-128@openssh.com
hmac-sha1-etm@openssh.com
hmac-sha1-96-etm@openssh.com
hmac-sha2-256-etm@openssh.com
hmac-sha2-512-etm@openssh.com
hmac-md5-etm@openssh.com
hmac-md5-96-etm@openssh.com
umac-64-etm@openssh.com
umac-128-etm@openssh.com
# echo "### Key"
### Key
# ssh -Q key
ssh-ed25519
ssh-ed25519-cert-v01@openssh.com
sk-ssh-ed25519@openssh.com
sk-ssh-ed25519-cert-v01@openssh.com
ecdsa-sha2-nistp256
ecdsa-sha2-nistp256-cert-v01@openssh.com
ecdsa-sha2-nistp384
ecdsa-sha2-nistp384-cert-v01@openssh.com
ecdsa-sha2-nistp521
ecdsa-sha2-nistp521-cert-v01@openssh.com
sk-ecdsa-sha2-nistp256@openssh.com
sk-ecdsa-sha2-nistp256-cert-v01@openssh.com
ssh-rsa
ssh-rsa-cert-v01@openssh.com
# echo "### Signature"
### Signature
# ssh -Q sig
ssh-ed25519
sk-ssh-ed25519@openssh.com
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
sk-ecdsa-sha2-nistp256@openssh.com
webauthn-sk-ecdsa-sha2-nistp256@openssh.com
ssh-rsa
rsa-sha2-256
rsa-sha2-512
# echo "### PQ / hybrid KEX"
### PQ / hybrid KEX
# ssh -Q kex | grep -E 'mlkem|sntrup'
sntrup761x25519-sha512
sntrup761x25519-sha512@openssh.com
mlkem768x25519-sha256
# echo "### FIDO keys"
### FIDO keys
# ssh -Q key | grep sk
sk-ssh-ed25519@openssh.com
sk-ssh-ed25519-cert-v01@openssh.com
sk-ecdsa-sha2-nistp256@openssh.com
sk-ecdsa-sha2-nistp256-cert-v01@openssh.com
# echo "### RSA SHA2 signatures"
### RSA SHA2 signatures
# ssh -Q sig | grep rsa-sha2
rsa-sha2-256
rsa-sha2-512
AIX 7.3.4.0(OpenSSH 9.9)— sshd -T / ssh -Q コマンドログ全文(クリックで展開)
# oslevel -s
7300-04-00-2546
# ssh -V
OpenSSH_9.9p2, OpenSSL 3.0.16 11 Feb 2025
# lslpp -l | grep openssh
openssh.base.client 9.9.3015.2000 COMMITTED Open Secure Shell Commands
openssh.base.server 9.9.3015.2000 COMMITTED Open Secure Shell Server
openssh.man.en_US 9.9.3015.2000 COMMITTED Open Secure Shell
# sshd -T
port 22
addressfamily any
listenaddress [::]:22
listenaddress 0.0.0.0:22
usepam no
pamservicename sshd
logingracetime 120
x11displayoffset 10
maxauthtries 6
maxsessions 10
clientaliveinterval 0
clientalivecountmax 3
requiredrsasize 1024
streamlocalbindmask 0177
unusedconnectiontimeout none
permitrootlogin yes
ignorerhosts yes
ignoreuserknownhosts no
hostbasedauthentication no
hostbasedusesnamefrompacketonly no
pubkeyauthentication yes
kerberosauthentication no
kerberosorlocalpasswd yes
kerberosticketcleanup yes
gssapiauthentication no
gssapicleanupcredentials yes
gssapikeyexchange no
gssapistrictacceptorcheck yes
gssapistorecredentialsonrekey no
gssapikexalgorithms gss-group14-sha1-,gss-group14-sha256-,gss-group16-sha512-,gss-nistp256-sha256-,gss-curve25519-sha256-,gss-gex-sha1-
passwordauthentication yes
displaypatchversion no
kbdinteractiveauthentication yes
printmotd yes
x11forwarding no
x11uselocalhost yes
permittty yes
permituserrc yes
strictmodes yes
tcpkeepalive yes
permitemptypasswords no
compression yes
enablehwcompression yes
gatewayports no
usedns no
allowtcpforwarding yes
allowagentforwarding yes
disableforwarding no
allowstreamlocalforwarding yes
streamlocalbindunlink no
fingerprinthash SHA256
exposeauthinfo no
refuseconnection no
pidfile /var/run/sshd.pid
modulifile /etc/ssh/moduli
xauthlocation /usr/bin/X11/xauth
ciphers aes128-ctr,aes192-ctr,aes256-ctr,chacha20-poly1305@openssh.com,aes128-gcm@openssh.com,aes256-gcm@openssh.com
macs umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
banner none
forcecommand none
chrootdirectory none
trustedusercakeys none
revokedkeys none
securitykeyprovider internal
authorizedprincipalsfile none
versionaddendum none
authorizedkeyscommand none
authorizedkeyscommanduser none
authorizedprincipalscommand none
authorizedprincipalscommanduser none
hostkeyagent none
kexalgorithms sntrup761x25519-sha512,sntrup761x25519-sha512@openssh.com,mlkem768x25519-sha256,curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256
casignaturealgorithms ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,rsa-sha2-512,rsa-sha2-256
hostbasedacceptedalgorithms ssh-ed25519-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,rsa-sha2-512,rsa-sha2-256
hostkeyalgorithms ssh-ed25519-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,rsa-sha2-512,rsa-sha2-256
pubkeyacceptedalgorithms ssh-ed25519-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,rsa-sha2-512,rsa-sha2-256
sshdsessionpath //usr/sbin/sshd-session
persourcepenaltyexemptlist none
loglevel INFO
syslogfacility AUTH
authorizedkeysfile .ssh/authorized_keys
hostkey /etc/ssh/ssh_host_rsa_key
hostkey /etc/ssh/ssh_host_ecdsa_key
hostkey /etc/ssh/ssh_host_ed25519_key
authenticationmethods any
channeltimeout none
subsystem sftp /usr/sbin/sftp-server
maxstartups 10:30:100
persourcemaxstartups none
persourcenetblocksize 32:128
permittunnel no
ipqos af21 cs1
rekeylimit 0 0
permitopen any
permitlisten any
permituserenvironment no
pubkeyauthoptions none
persourcepenalties crash:90 authfail:5 noauth:1 grace-exceeded:10 refuseconnection:10 max:600 min:15 max-sources4:65536 max-sources6:65536 overflow:permissive overflow6:permissive
# echo "### KEX"
### KEX
# ssh -Q kex
diffie-hellman-group1-sha1
diffie-hellman-group14-sha1
diffie-hellman-group14-sha256
diffie-hellman-group16-sha512
diffie-hellman-group18-sha512
diffie-hellman-group-exchange-sha1
diffie-hellman-group-exchange-sha256
ecdh-sha2-nistp256
ecdh-sha2-nistp384
ecdh-sha2-nistp521
curve25519-sha256
curve25519-sha256@libssh.org
sntrup761x25519-sha512
sntrup761x25519-sha512@openssh.com
mlkem768x25519-sha256
# echo "### Cipher"
### Cipher
# ssh -Q cipher
3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
aes128-ctr
aes192-ctr
aes256-ctr
aes128-gcm@openssh.com
aes256-gcm@openssh.com
chacha20-poly1305@openssh.com
# echo "### MAC"
### MAC
# ssh -Q mac
hmac-sha1
hmac-sha1-96
hmac-sha2-256
hmac-sha2-512
hmac-md5
hmac-md5-96
umac-64@openssh.com
umac-128@openssh.com
hmac-sha1-etm@openssh.com
hmac-sha1-96-etm@openssh.com
hmac-sha2-256-etm@openssh.com
hmac-sha2-512-etm@openssh.com
hmac-md5-etm@openssh.com
hmac-md5-96-etm@openssh.com
umac-64-etm@openssh.com
umac-128-etm@openssh.com
# echo "### Key"
### Key
# ssh -Q key
ssh-ed25519
ssh-ed25519-cert-v01@openssh.com
sk-ssh-ed25519@openssh.com
sk-ssh-ed25519-cert-v01@openssh.com
ecdsa-sha2-nistp256
ecdsa-sha2-nistp256-cert-v01@openssh.com
ecdsa-sha2-nistp384
ecdsa-sha2-nistp384-cert-v01@openssh.com
ecdsa-sha2-nistp521
ecdsa-sha2-nistp521-cert-v01@openssh.com
sk-ecdsa-sha2-nistp256@openssh.com
sk-ecdsa-sha2-nistp256-cert-v01@openssh.com
ssh-rsa
ssh-rsa-cert-v01@openssh.com
# echo "### Signature"
### Signature
# ssh -Q sig
ssh-ed25519
sk-ssh-ed25519@openssh.com
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
sk-ecdsa-sha2-nistp256@openssh.com
webauthn-sk-ecdsa-sha2-nistp256@openssh.com
ssh-rsa
rsa-sha2-256
rsa-sha2-512
# echo "### PQ / hybrid KEX"
### PQ / hybrid KEX
# ssh -Q kex | grep -E 'mlkem|sntrup'
sntrup761x25519-sha512
sntrup761x25519-sha512@openssh.com
mlkem768x25519-sha256
# echo "### FIDO keys"
### FIDO keys
# ssh -Q key | grep sk
sk-ssh-ed25519@openssh.com
sk-ssh-ed25519-cert-v01@openssh.com
sk-ecdsa-sha2-nistp256@openssh.com
sk-ecdsa-sha2-nistp256-cert-v01@openssh.com
# echo "### RSA SHA2 signatures"
### RSA SHA2 signatures
# ssh -Q sig | grep rsa-sha2
rsa-sha2-256
rsa-sha2-512
運用環境での考慮点
mlkem768x25519-sha256 が利用可能であっても、運用環境で KEX を一括で制限する場合は、接続元クライアントや運用ツールとの互換性を確認したうえで慎重に検討することを推奨します。
古い SSH クライアント、一部のミドルウェア、バックアップ製品、監視ツール、運用自動化ツールなどが、OpenSSH 9.9 系で追加された KEX に対応していない場合、SSH 接続に失敗する可能性があります。
そのため、運用環境では以下の順に確認すると安全です。
-
ssh -Q kexでサーバー側の対応状況を確認する - 主要な接続元クライアントで
ssh -Q kexを確認する - 検証環境で
ssh -vvvにより実際に選択される KEX を確認する - 必要に応じて
KexAlgorithmsの優先順位を調整する - 互換性に問題がないことを確認してから本番適用を検討する
特に踏み台サーバー、監視製品、バックアップ製品、構成管理ツールなどが SSH 接続を利用している環境では、サーバー側の KexAlgorithms を変更する前に、接続元の対応状況を棚卸しすることが重要です。
既存環境での確認手順
自環境の対応状況を確認する際は、AIX バージョンだけではなく OpenSSH fileset バージョン で判断するのが正確です。
| 確認したいこと | 確認コマンド | 見るポイント |
|---|---|---|
| AIX の TL/SP | oslevel -s |
OS レベルの確認 |
| OpenSSH fileset | `lslpp -l | grep openssh` |
| OpenSSH 実行バージョン | ssh -V |
OpenSSH_9.9p2 か |
| 対応 KEX | ssh -Q kex |
mlkem768x25519-sha256 があるか |
| sshd デフォルト KEX | `sshd -T | grep kexalgorithms` |
| 実接続時の KEX | ssh -vvv ... |
kex: algorithm: の値 |
確認コマンド例は以下です。
# AIX の TL/SP を確認
oslevel -s
# OpenSSH fileset を確認
lslpp -l | grep openssh
# OpenSSH の実行バージョンを確認
ssh -V
# 対応している KEX を確認
ssh -Q kex | grep -E 'mlkem|sntrup'
# sshd のデフォルト KEX を確認
sshd -T | grep kexalgorithms
# 実際の接続時に選択された KEX を確認
ssh -vvv <user>@<server>
ML-KEM を明示的に指定して検証する場合は、以下のように実行します。
ssh -vvv -o KexAlgorithms=mlkem768x25519-sha256 <user>@<server>
ログに以下のように表示されれば、ML-KEM ハイブリッド KEX が選択されています。
debug1: kex: algorithm: mlkem768x25519-sha256
おわりに
今回の実機確認で、AIX における OpenSSH の耐量子ハイブリッド KEX 対応状況は以下のように整理できました。
-
OpenSSH 9.7 系(AIX 7.3.3.1):
sntrup761x25519-sha512@openssh.comのみ対応。mlkem768x25519-sha256は未対応 -
OpenSSH 9.9 系(AIX 7.3.3.2 / 7.3.4.0):
mlkem768x25519-sha256(NIST FIPS 203)を含む PQC ハイブリッド KEX に対応
重要な点として、OpenSSH 9.9 系の fileset(9.9.3015.2000)は AIX 7.3.3.2 の時点ですでに確認できました。そのため、AIX 7.3.4.0 であることだけを前提に判断するのではなく、実際に導入されている OpenSSH fileset と ssh -Q kex の結果を確認することが重要です。
また、耐量子対応として確認しているのは主に KEX、つまり鍵交換の部分です。ユーザー認証鍵、ホスト鍵、通信暗号方式まで含めて SSH 全体が完全に耐量子化されたわけではありません。
今後、AIX 環境で SSH の暗号設定を見直す場合は、AIX の TL/SP、OpenSSH fileset、クライアント側の対応状況、運用ツールの互換性をあわせて確認することが重要です。
