![macOS ssh が UserKnownHostsFile オプションを無視する](https://rvso.com/image/1592515/macOS%20ssh%20%E3%81%8C%20UserKnownHostsFile%20%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E7%84%A1%E8%A6%96%E3%81%99%E3%82%8B.png)
私は、一時的な IP アドレスを持ち、頻繁に変更される SSH キーを持つジャンプ ホストを介して仮想マシンに頻繁に SSH 接続しています。SSH キーが変更された場合にプロンプトが表示されたり、SSH キーを受け入れるようにプロンプトが表示されたりするのは望ましくありません。
StrictHostKeyChecking および UserKnownHostsFile オプションについて読みましたが、効果がないようです。コマンド ラインで UserKnownHostsFile=/dev/null を渡すと、ssh ホスト キーが常に ~/.ssh/known_hosts (現在、エントリが数十個あります) に追加され、常に ssh キーを受け入れるように求められます。
セキュリティ上の理由から、このレベルの非チェックをグローバルに実行したくありません。これは、bash ファイルにスクリプト化したこの接続に対してのみです。
私が使用している ssh コマンドは次のとおりです。
ssh -o 'ConnectTimeout=10' \
-o 'StrictHostKeyChecking=no' \
-o 'UserKnownHostsFile=/dev/null' \
-o 'CheckHostIP=no' \
-i ~/.ssh/my_ident \
"username@ip" \
-J "username@jump"
また、「=」の部分が問題である場合は、これを試してみましたが、結果は同じです。
ssh -o 'ConnectTimeout 10' \
-o 'StrictHostKeyChecking no' \
-o 'UserKnownHostsFile /dev/null' \
-o 'CheckHostIP no' \
-i ~/.ssh/my_ident \
"username@ip" \
-J "username@jump"
私はmacOS 10.14.4でOpenSSH_7.9p1、LibreSSL 2.7.3を使用しています
-o パラメータが無視される理由、または期待どおりに動作しない理由について何かご存知ですか?
答え1
これは MacOS とは関係ないかもしれません。、、などのパラメータはStrictHostKeyChecking
、接続先のターゲット ホストにのみ関連しています。あなたの場合は、です。これらは、引数の一部として指定されたホストには影響しません。UserKnownHostsFile
CheckHostIP
ip
jump
-J
コマンドラインでジャンプ ホストのこれらの設定を指定する方法はないと思います。ただし、~/.ssh/config
次のようにしてこれらのパラメータをファイルに追加できます。
Host jump
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
CheckHostIP no