Windowsでsshのキー変更エラーを出さないように設定
前置き
WindowsでLinux等にssh接続するならおおよそTeratermですが、個人的にコマンドプロンプト経由のOpenSSHも捨てがたいです。
(Teratermのあの the ターミナルです みたいなフォントがちょっと見にくくて苦手
🤖<フォント替えればいいのに は言わないお約束。)
他記事で書いている通りVagrantで作っては捨て作っては捨てをしているので、SSHの
「@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @」
が起きて毎回「known_hosts」を消しに行くのがちょっと面倒だったので回避策を備忘録的に書いておきます。
(今回は同一LAN内、かつ検証環境セグメントに絞って設定するのでほぼ問題ありませんが、クラウド上のサーバー等中間者攻撃を受けかねない環境であればセキュリティ上のリスクになります。ご認識おきください。)
本題
とりあえず結論
%USERPROFILE%\.ssh\config
に下記設定を入力する。
Host XX.XX.XX.*
UserKnownHostsFile nul
StrictHostKeyChecking no
例えば「10.255.255.100~199」を検証環境セグメントとしているなら
Host 10.255.255.1*
UserKnownHostsFile nul
StrictHostKeyChecking no
となります。
中身の話
ssh_config
に設定を入れて、鍵変更を出させないみたいなのはLinuxでもよくある話なので、Windowsでの差分だけ書きます。
まず、Linuxでは~/.ssh/config
なり/etc/ssh/ssh_config
なりに書きますが、Windowsでは%USERPROFILE%\.ssh\config
に書きます。
そもそもUserKnownHostsFile
でknown_hostsを指定しています。
Linuxなら/dev/null
等々に投げればよいですが、Windowsには/dev/null
がありません。
C++ではよくある話(らしい)ですが、NUL
というのが代わりに用意されています。
なのでUserKnownHostsFile nul
とします。
(ちなみにnulという名前のファイルは作れない様子)
ただし、known_hostsとの比較が出来ないと、このキー(フィンガープリント)を許可するかという対話が発生します。
それすら面倒になった時のために、StrictHostKeyChecking no
をつけています。
Discussion