Ubuntu 24.04で古いSSHサーバーに接続しようとした際に「no matching host key type found」エラーが発生する場合、クライアント側のSSH設定を調整する必要があります。この記事では、~/.ssh/configの使い方や/etc/ssh/ssh_configとの違いについて解説します。
エラーの意味
「Unable to negotiate with XXX port 22: no matching host key type found. Their offer: ssh-rsa, ssh-dss」というエラーは、サーバーが提供するホスト鍵の種類とクライアントが許可するホスト鍵の種類が一致しないことを意味します。Ubuntu 24.04のOpenSSHでは古いssh-rsaやssh-dssがデフォルトで無効になっていることがあります。
~/.ssh/configと/etc/ssh/ssh_configの違い
~/.ssh/configはユーザー単位でのSSH設定ファイルです。個別のユーザーだけに設定を反映させたい場合はこちらを編集します。
/etc/ssh/ssh_configはシステム全体のSSHクライアント設定で、全ユーザーに適用されます。個別設定より優先度は低いですが、システム全体に設定を反映したい場合はこちらを編集します。
古いホスト鍵を許可する設定例
ユーザー単位で古いssh-rsaやssh-dssを有効にする場合、~/.ssh/configに以下を追記します。
HostHostKeyAlgorithms ssh-dss,ssh-rsa PubkeyAcceptedAlgorithms +ssh-rsa
これにより、指定したサーバーとの接続でssh-rsaやssh-dssを許可するようになります。
注意点
古いホスト鍵は暗号強度が低く、セキュリティ上のリスクがあります。可能であれば、サーバー側のOpenSSHを更新して、現代的な鍵アルゴリズム(ed25519やrsa-sha2-256)を使用することが推奨されます。
また、~/.ssh/configはユーザー単位なので、他のユーザーには影響しません。システム全体に反映させたい場合は/etc/ssh/ssh_configに同様の設定を追記します。
まとめ
古いSSHサーバーに接続できない場合、~/.ssh/configにHostKeyAlgorithmsやPubkeyAcceptedAlgorithmsを指定することで、ssh-rsaやssh-dssを許可して接続可能にできます。~/.ssh/configはユーザー単位の設定ファイルで、/etc/ssh/ssh_configはシステム全体の設定です。セキュリティリスクに注意しつつ、必要な設定を行いましょう。


コメント