“Warning: the RSA host key”の警告を無視したら地味に被害があった件

$ssh なんちゃら、とどこぞにログインしようとしたら、

Warning: the RSA host key for なんちゃら differs from the key for the IP address 'なんちゃら'
Offending key for IP in ほにゃらら/.ssh/known_hosts:8
Matching host key in ほにゃらら/.ssh/known_hosts:11
Are you sure you want to continue connecting (yes/no)?

とか言われました。

で、以前似たようなことがあって何かぐぐって対処もしたんだよなぁと思いつつ、ちょっと急いでたのでYES!YES!YES!と無視してそのまま作業を継続。
具体的には、大量のファイルをscpしたかったので、一回ログアウトしてから、scp -r なんちゃらとか入力。
で、scpの時も同様のwarningがでて、OKOK、と無視してそのままコピーとかやってた訳です。

しばらくは普通に動いてたので、安心して放っておいたら……。

なんかしばらく時間がたって、そろそろ完了してるかなー、と思って確認したら、なんかエラーメッセージが出て、途中でコピーが止まってる。

(アカン)

と思いましたね、ええ。

具体的なエラーメッセージをコピっていなかったのが惜しいところなのですが、「RSAがなんちゃらだけどこれでいいの? 何か入力して?」みたいなメッセージだったかと思います。

しかも、その後うんともすんとも言わなくなってしまい、当然何かのコマンドやパスの入力とかもできず、挙句の果てにCTRL-Zも効かないのでやむなくterminal window自体を切るという羽目になったのでした。

やっぱこの手の警告メッセージはちゃんと早めに対処しないと、という教訓ですね。

というわけで、多分以前似たようなことをやったなぁと思いつつ、念の為、ぐぐって、

http://qiita.com/grgrjnjn/items/8ca33b64ea0406e12938

を見てみる。

保存している接続先サーバの情報(フィンガープリント)を削除してしまえば、新規接続となるためエラーを回避できる。そのコマンドは、ssh-keygen -R hostnameで行うのが正解。.oldを付けてバックアプも自動で作られる。

(中略)

実態は~/.ssh/known_hostsファイルなので、直接編集しても良い。エラーとなったサーバ名(またはIPアドレス)から始まる行を1行削除するだけ。

……とのことです。

ただ、微妙にエラーメッセージが違うんですよね。
念の為もう少し検索してみる。

https://lists.ubuntu.com/archives/ubuntu-jp/2009-March/001653.html

> Offending key for IP in /home/inaba/.ssh/known_hosts:2
> Matching host key in /home/inaba/.ssh/known_hosts:3
から、当該のIPアドレスのエントリが known_hostsファイルに二つ存在していますね

2行めと3行めですね。

sudo vi known_hosts にて ファイルを開いて、
2行めを削除するとなおりますよ

なるほど!

というか以前に対処した時もこちらを拝見して参考にさせて頂いた気がします。

……という訳でknown_hostsファイルを開いてみました。

大量の暗号化された文章(改行)
大量の暗号化された文章(改行)
大量の暗号化された文章(改行)
大量の暗号化された文章(改行)
大量の暗号化された文章(改行)
大量の暗号化された文章(改行)
大量の暗号化された文章(改行)
大量の暗号化された文章(改行)
大量の暗号化された文章(改行)

こんな感じのファイルが…。

どうやら、これが暗号化されている、ということらしいです。

とりあえず、

Offending key for IP in なんちゃら

で示された行を削除すれば良いということのようなので、その通りに該当の行を削除しました。
#viは慣れてないのでemacsで、ですが……。

その後、無事にエラー無しで一括scpも出来たのでした。やれやれ。