host_keys が同じなのに、接続時に SSH ホスト キーが異なるのはなぜですか?

host_keys が同じなのに、接続時に SSH ホスト キーが異なるのはなぜですか?

マシンは 3 台あります: A (ここから B と C に接続)、B、C。B
と C は同じ SSHD ホスト キーを持っています (コピーされているため 100% 同じで、SSHD も再起動されており、sshd_config ファイルも同じです)。

C では、known_hosts ファイルは次のようになります。

C:~/.ssh # grep B *
C:~/.ssh # grep A *
known_hosts:ssh-rsa xxxx...xxxx
C:~/.ssh # 

C から A に接続しようとすると、「A」は RSA ホスト キーを提供します。C
から B に接続しようとすると、「B」は ECDSA ホスト キーを提供します。

質問:なぜでしょうか? たとえば、「A」サーバーと「B」サーバーが、RSA SSHD ホスト キーの両方を提供するのが論理的ではないでしょうか?

答え1

ホスト キーを初めて学習する場合は、ECDH/ECDSA キーが優先されます。ホスト C はホスト A の RSA キーをすでに知っているため、それを使い続けます。ただし、ホスト C はホスト B のキーについては何も知らないため、ECDH/ECDSA が使用されます。

(私は5.7 のリリースノートECDH/ECDSA が導入されたとき)。

私が受けた質問: 両方のキーが必要ですか? はい、そうです。SSH のすべてのインストールが ECDSA をサポートしているわけではないので、RSA が必要です。(たとえば、putty はまだ ECDSA をサポートしていません) ECDSA だけを持っていたらどうなるでしょうか? 誰があなたに連絡しようとしているかによります。相手が ECDSA をサポートしていれば、すべてが期待どおりに動作します。そうでない場合は、何らかの障害が発生します。 どちらがいいですか? 個人的には分かりません。ECDSA はそれほど処理能力を必要としないので、古いハードウェアではより高速に動作することがわかりました。また、OpenSSH では RSA よりも ECDSA が好まれるので、開発者は ECDSA の方が優れていると考えているのだと思います。

答え2

接続しようとしているサーバーは同じバージョン/etc/ssh/sshd_config、または OpenSSH (および OpenSSL) バージョンですか (構成が同一であることと接続先がどこかが矛盾しているようです)? ECDH/ECDSA は OpenSSH 5.7p1 で導入されたため、1 つのサーバーが古い場合は、キー ファイルが無視されます。

関連情報