server.example.testは正規の再構築でhost keyが変更され、fingerprintを別経路で確認済みである。
~/.ssh/known_hostsからこのhostの古いentryだけを安全に削除する。
適切なコマンドはどれか。
ssh-keygen -R HOSTはknown_hosts内のplainまたはhashed host entryを削除する。fingerprint確認なしに警告を回避してはならない。
詳細解説
ssh-keygen -F server.example.testmatching entryを検索表示するが削除しない。
誤り。-Fは古いentryの存在や内容を探すだけで削除しない。
ssh-keygen -l server.example.testkey file fingerprint表示のoptionでknown_hosts削除ではない。
誤り。-lはkey file fingerprint用で、host名をknown_hostsから削除する操作ではない。
ssh-keygen -D server.example.testPKCS#11 providerからpublic keyをdownloadするoption系でhost entry削除ではない。
誤り。-DはPKCS#11関連で、known_hosts entryのremove optionではない。
ssh-keygen -R server.example.testknown_hostsから指定hostのkeyを削除する。
正しい。-Rはplain/hashed entryを含め指定hostのkeyをknown_hostsから除く。
実際に確かめる
一時的な検証環境で実行できる例です。
printf '%s
' '-F=find host entries' '-R=remove host entries' '-l=show key fingerprint'期待される結果
-F=find host entries
-R=remove host entries
-l=show key fingerprint理解のポイント
- -Rはremove
- 先に正規変更を確認
- known_hosts全体を削除しない
確認時の注意
- 確認環境: OpenSSH ssh-keygen option対応表
- 実known_hostsは変更しない。
基礎のおさらい
MITM防止
host key不一致は攻撃の可能性もあるため、管理者やconsole等の独立経路で新fingerprintを確認する。
再登録
古いentry削除後の初回接続で表示されるfingerprintを検証してから新keyを保存する。