ホストキーが変更されたことがわかっているときに、known_hostsの情報を更新する簡単な方法はありますか?


38

ホストのオペレーティングシステムが再インストールされ、公開キーが再生成された場合、新しいキーが古いキーと一致しないため、もちろん失敗します。

ホストのキーが変更されたことと、更新することを知っていることをsshに伝える簡単な方法はありますか。テキストエディタまたはsedなどを使用して問題のある行を削除すると、少しエラーが発生しやすいと思います。


これは、スーパーユーザーに関する質問を複製します。より詳細な情報を参照してください。
イッツ

回答:


59

ssh-keygen -R hostnameknown_hostsファイルからホスト名を削除するために使用します。次回接続するときに、新しいホストキーがknown_hostsファイルに追加されます。


12
TARGET_HOST=[hostname or IP]

# Remove the old key(s) from known_hosts
ssh-keygen -R $TARGET_HOST

# Add the new key(s) to known_hosts (and also hash the hostname/address)
ssh-keyscan -H $TARGET_HOST >> ~/.ssh/known_hosts

次回接続時に、あなたが接続しますせずに頼まれAre you sure you want to continue connecting (yes/no)?たキーがすでにになりますので、known_hostsファイル。


1
〜/ .ssh / config のStrictHostKeyCheckingも参照してください
Jeff Schaller

2
別の変数名を使用します。...HOSTは、独自のホスト名を提供するいくつかのシェルにあるため、変更しないことをお勧めします(終了するか、サブシェルからこれを行うことができますが、 、thehost代わりになぜですか?または何か.ALLCAPS変数は予約済みの内部名と衝突する可能性があります。小文字の名前は衝突しないはずです。)
オリビエデュラック

known_hostsのこれらのキーには、| 1 |で始まるものがプレフィックスとして付加されます。そのようなものは、この方法でファイルに追加されませんか、間違っていますか?ssh-keyscanが返すものは| 1 |で始まっていないため、違いは何ですか
ダニエルF

1
(@ DanielF +)ハッシュ形式を使用sshし、ホスト名とそのアドレスに個別のエントリがあるキーを受け入れた場合、競合を避けるためにssh-keygen -R それぞれを行う必要あります
dave_thompson_085
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.