質問: サーバーにsshで接続すると、remote host identificationが変更されたのに、known_hostsファイルとサーバーが変更されていないのはなぜですか? このあいまいな問題に遭遇する可能性のある他の人を助けるために、これをここに置きます。最近、osxをmavericksからelcapitanにアップグレードしました。次に、以前にログインしたシステムにログインしようとしましたが、sshは次のエラーをスローしました。@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ warning: remote host identification has changed! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ it is possible that someone is doing something nasty! someone could be eavesdropping on you right now (man-in-the-middle attack)! it is also possible that a host key has just been changed. the fingerprint for the ecdsa key sent by the remote host is sha256:btm9/3hewnrlkniuhw4efh6sqwqcr/dnjud87ejdr6k. please contact your system administrator. add correct host key in /users/myuser/.ssh/known_hosts to get rid of this message. offending rsa key in /users/myuser/.ssh/known_hosts:33 ecdsa host key for real.hostname.com has changed and you have requested strict checking. host key verification failed. 既知のhostsファイルを調べて、公開鍵を確認しました。real.hostname.com,192.168.0.138 ssh-rsa aaaab3nzac1yc2eaaaadaqabaaabaqdhxfq6unxndgthogopkgyhk0hpmk1nigpbdnvyo9q8zx//ms3jorh+tvl0rigj+i5f0qsujk2j80byycjncxkyj+yipogiogiufguofutvjlh4ixt652b2wxjjwpqavz70xez1tofxsil8h0nountmlxrsfy0g5gx+089aghq3hh8oguigoygcrv7dpdh+timdxqqz0r4yhoa0iaojv+svqbzart8/axc8vzundww6fi96rxk1vafg9sjeegwazzwcbufopa4cb8r7sq5thg56l5zx9/yadg4/pf02o6dp62m1rw7x6vog/gea72axqv/izm7/ws7sassikthkrijf 次に、別のマシンに移動し、上記のキーが他のマシンのknown_hostsファイルのキーと一致することを確認しました。次に、他のマシンからreal.hostname.comにエラーや警告なしで接続しました。なぜこれが起こったのですか?
回答: ここで重要なのは、mavericksからelcapitanへのアップグレードです。 sshクライアントがelcapitanでアップグレードされたことが判明したため、sshサーバーに接続しようとすると、「ssh-rsa」の代わりに別のキータイプが使用されるようになりました。この場合、sshは「ecdsa-sha2-nistp256」を使用しようとします。新しいシステムでは、ドメインで「ssh-keyscan」を実行すると、ssh-rsaキータイプとecdsa-sha2-nistp256の両方が吐き出されます。myname@myhost-1:~$ ssh-keyscan real.hostname.com # real.hostname.com ssh-2.0-openssh_6.6.1 real.hostname.com ecdsa-sha2-nistp256 k8daafozryv0kbp8ua48iik8daafozryvaaibmlzdhayntyaaabbbaoq0inbttdcqbaackf5biy0qghsfzbv/mrol936yoaxgpanzlhl+zq5wek7nm2unt2qgxqwklsz6ge6slznqkw= # real.hostname.com ssh-2.0-openssh_6.6.1 real.hostname.com ssh-rsa k8daafozryv0kbp8ua48iik8daafozryvk8daafozryv0kbp8ua48iik8daafozryvfq6unxndgthogopkgyhk0hpmk1nigpbdnvyo9q8zx//ms3jorh+tvl0rigj+i5f0qsujk2j80byycjncxkyj+k8daafozryv0kbp8ua48iiixt652b2wxjjwpqavz70xez1tofxsil8h0nountmlxrsfy0g5gx+hgxolulsr9veghx2oygcrv7dpdh+timdxqqz0r4yhoa0iaojv+svqbzart8/axc8vzundww6fi96rxk1vafg9sjeegwazzwcbufopa4cb8r7sq5thg56l5zx9/yadg4/pf02o6dp62m1rw7x6vog/gea72axqv/izm7/ws7sassikthkrijf 新しいバージョンのsshがecdsa-sha2-nistp256キータイプ文字列をssh-rsaキータイプ文字列と一致させようとすると、それらが同じマシンの2つの異なるキータイプであると認識するのではなく、失敗します。これはバグだと思いますが、どこに投稿すればいいのかわかりません。