OpenSSH : WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
OpenSSH の ssh コマンドや scp コマンドで相手先のホストにアクセスしようとしたとき、次のようなメッセージが出ることがあります。
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
これは、ホスト側のコンピュータが入れ替わったのを検出して警告を出しているものです。たとえば、誰かがなりすましで同じ名前で別の PC を設置し、パスワードを盗むつもりかもしれません。また、途中に盗聴用のサーバを置いて通信内容を盗み見るためかもしれません。
もちろん単にサーバが壊れて予備のサーバに置き換えたとか、LAN ボードを交換しただけという時もあるでしょう。自分で分かるときはよいですが、不明なときはホスト側の管理者に確認しましょう。何も変わっていないのにこのような警告が出るときは、盗聴のおそれがあります。
さて、問題ないと分かった上でこの警告を出ないようにするには、~/.ssh/ ディレクトリにある known_hosts ファイルを開いて該当する項目を削除してください。
hoge,192.168.0.1 ssh-rsa AAAAB3N……15s= foobar,192.168.0.2 ssh-rsa AAAAB3N……rBU=
の該当するホストの行 (ホスト名だけや IP アドレスだけの時もあります) を削除します。次にアクセスすると RSA key fingerprint が表示され正しいホストかどうか確認されます。正しければ Are you sure you want to continue connecting (yes/no)? に対して yes を入力すれば known_hosts ファイルに新しいホストが追加されます。
ただし、OpenSSH 4.0以降で、ssh_config の HashKnownHosts が有効になっていると、knows_hosts 内のホスト名、IP アドレスはハッシュ化されて保存されます。このとき、known_hosts ファイルを直接開いただけではホスト名や IP アドレスは分からないようになっています。この場合は ssh-keygen コマンドの -F オプションを使って
# ssh-keygen -F hoge # Host hoge found: line 6 type RSA |1|dEw……Bi=|85……lE= ssh-rsa AAAAB……XCs= # ssh-keygen -F 192.168.0.1 # Host 192.168.0.1 found: line 7 type RSA |1|9zY……p0=|Yw……X+Y= ssh-rsa AAAAB……XCs=
とすればどの行に格納されているかを見ることができます。エディタでこの行を削除するのは間違えるかもしれませんので、ssh-keygen コマンドの -R オプションで削除しましょう。
# ssh-keygen -R hoge .ssh/known_hosts updated. Original contents retained as .ssh/known_hosts.old
[Linux]ssh 接続しようとすると「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」が表示されるときは
CD で新規インストールした Ubuntu 8.04.2 LTS Server に Windows の TeraTerm から ssh で接続しようと試みたら、以下のエラーメッセージが表示されました。 勿論、この話題に登場する Ubuntu とは関係…
トラックバック by PRiMENON:DiARY — 2009-04-18 22:46