私の側では、これは新しい(ssh
以上の)クライアントのOpenSSH_7.9p1
バグと思われるものが原因で発生する。そして、この誤解を招くようなメッセージを表示します!
これを解決する良い方法を私は知りませんが、私が見つけた唯一の回避策は、クライアントが “より安全な新しいecdsa
鍵 "を再学習できるように、すべての "良いが古いrsa
鍵 "を削除することです。従って:
最初のステップはすべてのよい古いRSAの鍵を取除くことである( Warning! これはMitMに対する保護を失う ):
第2のステップは、その後、すべてのホストキーを再学習することであるrsa
を使用して再び各IPに接続することによって手動で行われなければなりません。それは上記のように同じIPです! だから、(既知の)IPの(良い)キーが突然自分自身を攻撃しているように見えます(そうではありません、ecdsa
クライアントが2つの互換性のないキーを混ぜているので、以下を参照してください)。
今、私たちはそれを修正しようとします:
$ sftp test@136.243.197.100
Connected to test@136.243.197.100
sftp>
$ sftp test@valentin.hilbig.de
Connected to test@valentin.hilbig.de.
sftp>
もう一度やってみましょう:
$ sftp test@gcopy.net
Warning: the ECDSA host key for 'gcopy.net' differs from the key for the IP address '136.243.197.100'
Offending key for IP in /home/test/.ssh/known_hosts:45
Matching host key in /home/test/.ssh/known_hosts:44
Are you sure you want to continue connecting (yes/no)?
WTF? ここで何が起こったのでしょうか?サーバーから学んだ新しい新鮮なキーはまた失敗するか。しかも問題はさらに横並びに!?
$ ssh-keygen -R 136.243.197.100
# Host 136.243.197.100 found: line 45
/home/test/.ssh/known_hosts updated.
Original contents retained as /home/test/.ssh/known_hosts.old
$ sftp test@gcopy.net
Warning: Permanently added the ECDSA host key for IP address '136.243.197.100' to the list of known hosts.
Connected to test@gcopy.net.
$ sftp test@valentin.hilbig.de
Warning: the RSA host key for 'valentin.hilbig.de' differs from the key for the IP address '136.243.197.100'
Offending key for IP in /home/test/.ssh/known_hosts:45
Matching host key in /home/test/.ssh/known_hosts:10
Are you sure you want to continue connecting (yes/no)?
いや、鍵でもサーバーでもありません。全てが正しいのです!
正しい鍵の確認に失敗しているのは、ssh
クライアントなのです!
ssh
のエントリは、今までの鍵の確認に失敗しています。クライアントによってサーバーから引き出されたキーはタイプが007であるのに対し、ssh
のエントリー45
はタイプが007のキーを持っています(そのため、他のキーとは一致しません!)。それは複数のバリアントに存在するホストキーに対処することができません! どうすればいいのでしょうか?
しかし、手動ではありますが、不器用な回避策があります:
手動でタイプknown_hosts
の古い鍵の痕跡をすべて削除しなければなりません。問題のキーは出力に示されていますが、直接問題としてマークされていません:
$ sftp -v test@valentin.hilbig.de
チェック:
debug1: kex: host key algorithm: rsa-sha2-512
を与えます
$ sftp -v test@gcopy.net
だからここで matching ホストキーは問題のあるものであり、問題のあるキーは保持されなければならない右のものです! だから間違った(一致する)1つを取除きましょう:
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
今再度点検して下さい:
Warning: the RSA host key for 'valentin.hilbig.de' differs from the key for the IP address '136.243.197.100'
Offending key for IP in /home/test/.ssh/known_hosts:45
Matching host key in /home/test/.ssh/known_hosts:10
YAY! 問題は最終的に消えた。しかし、ecdsa-sha2-nistp256
のいくつかの100のエントリでは、この "ソリューション "は本当に主要なPITAになります(そして、エルム街のエラーが発生しやすいセキュリティの悪夢。YMMV.)。