OpenSSH : WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

2007-8-1 07:00
このエントリーをはてなブックマークに追加

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

1件のコメント

  1. (thumbnail)

    [Linux]ssh 接続しようとすると「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」が表示されるときは

    CD で新規インストールした Ubuntu 8.04.2 LTS Server に Windows の TeraTerm から ssh で接続しようと試みたら、以下のエラーメッセージが表示されました。 勿論、この話題に登場する Ubuntu とは関係…

    トラックバック by PRiMENON:DiARY2009-04-18 22:46

現在、コメントフォームは閉鎖中です。

23 queries. HTML convert time: 0.238 sec. Powered by WordPress. Valid XHTML
Copyright © 2003-2013 @ futuremix.org ログイン