今時のバージョンのOpenSSHではknown_hostsがハッシュ化されてて手動管理がしにくいし、スマートに決めたいのでコマンドでやってみる。
コマンド
結論から書くと↓こんな感じでOK。(target-hostname
のホストキーが変わった場合の例)
host="target-hostname"
ssh-keygen -R $host
ssh-keyscan -H $host >> ~/.ssh/known_hosts
説明
-
ssh-keygen -R hostname
は~/.ssh/known_hosts
から対象ホストのホストキーを削除してくれる。複数あれば全部消してくれるしハッシュ化されてるのもされてないのも全部消してくれるので便利。known_hostsファイルをエディタで開いてエラーメッセージで指摘された行数まで移動して手で削除するのなんかより100倍楽です。から対象ホストのホストキーを削除してくれる。- 複数あれば全部消してくれるしハッシュ化されてるのもされてないのも全部消してくれるので便利。
- known_hostsファイルをエディタで開いてエラーメッセージで指摘された行数まで移動して手で削除するのなんかより100倍楽。
-
ssh-keyscan
は対象ホストのホストキー一覧を取得するコマンド。無言で実行できるから一旦手動でssh試みてプロンプトでyesとかするより使い勝手が良い。は対象ホストのホストキー一覧を取得するコマンド。-H
- 無言で実行できるから一旦手動でssh試みてプロンプトでyesとかするより使い勝手が良い。
-
-H
オプションを付けるとホスト名がハッシュ化される、無しなら昔ながらにホスト名で表示される、今時はハッシュ化しとけば良いと思う。
オプションを付けるとホスト名がハッシュ化される、無しなら昔ながらにホスト名で表示される、今時はハッシュ化しとけば良いと思う。 -
注意点! 追記する為の
>>
を間違えて>
て書くと既存のキーが全部消えるので気をつけること!