known hosts
sshでは、2回目のログインからホスト認証が自動的に行われます。この認証では、ホスト鍵が利用されます。sshのknown_hosts とは、サーバのホスト鍵(host key)の1つのホスト公開鍵を登録するファイルです。
読み方
- known_hosts
- のうん ほすつ
概要
sshの認証は、ユーザ認証の前に、ホスト認証が実行されます。 ホスト認証は、ホスト鍵によって行われます。
はじめてログインするホストのホスト鍵は、ユーザは通常は持っていないため、known_hostsに追加するか、sshコマンドによって確認されます。2回目以降のログインについては、known_hostsにホスト鍵が登録されているため、sshコマンドによって、自動的にホスト認証が実施されます。
ホストAのホスト鍵をバックアップせずに、OSをインストールしなおした場合、ホスト鍵が失われてしまうため、新しいホスト鍵のペアが作成されます。このとき、ホストAにログインしていたユーザは、ホスト鍵が変更されてしまったので、OS再インストール後にログインしようとするとホスト鍵が一致しないため、ホスト認証が失敗するため、sshコマンドは、ホスト鍵が一致しないが、ログインするか、といった確認をしてきます。
OS再インストールなどによってホスト鍵が変更される場合には、古いホスト鍵をknown_hostsから削除して、新しい鍵を登録する必要があります。
新しいホストは、自動的にユーザファイルに追加されます。もし、ホストの身元確認が変更されているなら、サーバスプーフィングや中間者攻撃から守るためにパスワード認証を無効化します。
known_hostsからホストを削除する
ssh-keygenコマンドを使用して、ホスト鍵を削除できます。viなどのエディタでも削除できますが、ssh-keygenのほうが簡単です。
ssh-keygen -R foo.local
known_hosts2
古いOpenSSHのバージョン1とバージョン2で異なるknown_hostsのファイルを使用していました。SSHバージョン2では、known_hosts2のファイルを以前は利用されていましたが、現在のOpenSSHでは、known_hostsに統合されています。
関連項目
ツイート