web-dev-qa-db-ja.com

SSHの既知のホスト形式の違い

最近、クライアント(CI)がリモートのホストキーを拒否したため、CIサーバーの展開で問題が発生しています(known_hostsにあるにもかかわらず)。 SSHが展開プラグインと互換性がないように見える形式でホストキーを保存していることに気づいたときまで、私は困惑していました。参考までに、互換性のある形式(私のパーソナルマシンにはまだ存在します)は次のようになります。

11.22.33.44 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCkVf7rhfC7nLxbeIQRj2bWitUC+XLSAeQ0ap8r8rKObDXYfPdB97NZth9JCEt3OrBXuBeg4PaAEuPu2QF7WXoT60hgAP6etr0W4LqcH59yd/X0ogFP7Y7hIf6dz1txDKaW92wgUi5XShwH6vukf0gLvW6/ak1LTBuoy72gaoUvxZge4KZivz9XqvSQHNOG9KYNfh8U6cRM8YTQo5in7YD5d6REV/FUmXpvBzCa9kbVRSlQFGYEc1HidTnPnJDteas3A9y3na385O7WN64aAkg7TO8IFXKdDHSwji9ZyrCVPA5GEuyLKhDFanV8iJ7CNflHMP8TwG5FOT2bSkV0lPyl

新しいホストキーを受け入れるときにSSHが現在保存している形式は次のようになります。

11.22.33.44 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEJJEs165NgdEcD94Xg3ySFA/qgkfytxNCX1X3pB2SPgU/mHLGXCXM8+VqMBXocM8OMOq2L0fDGr5mI+nGqjhNU=

(注:公開鍵を少し変更してみましたが、元の形式ではまだ互いに似ていません。)

最初の形式のみが展開プラグインと互換性がありますが、2番目の形式は無条件に無視されます。誰でもこの矛盾を説明できますか?

10
caseif

これらはknown_hostsの異なる形式ではなく、異なるキータイプです(ssh-rsaおよびecdsa-sha2-nistp256-sshdのマニュアルページで詳細に説明されています)。サーバーは通常、異なるクライアントとのより広い互換性を提供するために、異なるタイプのより多くのホストキーを持っています。

サーバー上にいる場合は、すべてのホストキーを検索してそれらの公開キーを印刷できますが、行は次の形式とは異なります。

$ cat /etc/ssh/ssh_Host_*.pub
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEJJEs165NgdEcD94Xg3ySFA/qgkfytxNCX1X3pB2SPgU/mHLGXCXM8+VqMBXocM8OMOq2L0fDGr5mI+nGqjhNU= user@Host

known_hostsファイルが受け入れる形式は、(サーバーからキーの信頼性を実現するために)を使用して取得できます。

$ ssh-keyscan 11.22.33.44
11.22.33.44 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEJJEs165NgdEcD94Xg3ySFA/qgkfytxNCX1X3pB2SPgU/mHLGXCXM8+VqMBXocM8OMOq2L0fDGr5mI+nGqjhNU=
#[...]

これは、クライアントに直接保存できる形式known_hostsを出力します。

全体像(マニュアルページから):

これらのファイルの各行には、マーカー(オプション)、ホスト名、ビット、指数、係数、コメントのフィールドが含まれています。フィールドはスペースで区切られます。

(生成されたものと一致しないように見えますが、ホスト名、キータイプ、キーデータ(base64))-質問では重要ではないため、後で確認します

15
Jakuje