なぜ ssh はサーバーのキー フィンガープリントの検証を常に要求しないのでしょうか?

なぜ ssh はサーバーのキー フィンガープリントの検証を常に要求しないのでしょうか?

時々、既知のホスト ファイルにないサーバーに SSH 経由で接続すると、ssh から次のメッセージが表示されることがあります。

ホスト '[domain] ([ip_address])' の信頼性を確立できません。RSA
キーのフィンガープリントは [fingerprint] です。
接続を続行しますか (はい/いいえ)?

「はい」を選択すると、次のメッセージが表示されます。

警告: '[ドメイン]' (RSA) が既知のホストのリストに永続的に追加されました。

しかし、他のサーバー(github.comなど)では、続行するように求められず、代わりにすぐに少し表現が異なる次のメッセージが表示されます。

警告: IP アドレス '[ip_address]' の RSA ホスト キーが既知のホストのリストに永続的に追加されました。

この行動の違いは何によって起こるのでしょうか?そしてもっと重要なのは、私がないプロンプトが表示された場合、サーバーの操作を続行する前に、known_hosts ファイルに追加されたキーを手動で確認する必要がありますか?

どちらの場合も、公開鍵で認証しています。システムにインストールされた OpenSSH を使用して、OS X 10.10.3 を実行しています。

答え1

これはおそらく、これらのサイトでは SSH フィンガープリントが DNS に保存されており、ユーザーがキーを検証する必要がなくなったことが原因です。

この機能はSSHFPレコードと呼ばれます。これを確認するには、ssh-keygen -r github.com

答え2

結局私はただのバカだった。

一方、ジャクジェが言うようにSSHFPでは、サイトがDNSレコードに公開鍵のフィンガープリントを保存することを許可しています。この場合、鍵はだったすでに known-hosts ファイルのドメイン名の下に存在します (これは、コマンド-vにデバッグ フラグを追加することで発見しましたssh)。

私が受け取った情報メッセージに説明されているように、ファイルに新しい行が追加されていました使用されているIPアドレス

関連情報