macOS ssh が UserKnownHostsFile オプションを無視する

macOS ssh が UserKnownHostsFile オプションを無視する

私は、一時的な 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、接続先のターゲット ホストにのみ関連しています。あなたの場合は、です。これらは、引数の一部として指定されたホストには影響しません。UserKnownHostsFileCheckHostIPipjump-J

コマンドラインでジャンプ ホストのこれらの設定を指定する方法はないと思います。ただし、~/.ssh/config次のようにしてこれらのパラメータをファイルに追加できます。

Host jump
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null
    CheckHostIP no

関連情報