簡単な答えは次のとおりです。
- 新しいホストの場合、何も必要ありません。
env.reject_unknown_hosts
デフォルトはFalse
- キーが変更された既知のホストについては、変更され
env.disable_known_hosts = True
たホストへの接続を続行することを決定します。
古いドキュメントを読んでください: http://docs.fabfile.org/en/1.5/usage/ssh.html#unknown-hosts
paramiko ライブラリは、known_hosts ファイルを読み込むことができ、接続先のホストをそのマッピングと比較します。不明なホスト (ユーザー名または IP が known_hosts に見つからないホスト) が検出された場合にどうなるかを決定するための設定を使用できます。
- 拒否: ホスト キーは拒否され、接続は確立されません。これにより Python 例外が発生し、ホストが不明であるというメッセージで Fabric セッションが終了します。
- 追加: 新しいホスト キーが既知のホストのメモリ内リストに追加され、接続が確立され、処理が正常に続行されます。これはディスク上の known_hosts ファイルを変更しないことに注意してください!
- 質問: Fabric レベルではまだ実装されていません。これは paramiko ライブラリ オプションであり、不明なキーとそれを受け入れるかどうかについてユーザーにプロンプトが表示されます。
上記のように、ホストを拒否するか追加するかは、env.reject_unknown_hosts オプションを介して Fabric で制御されます。便宜上、デフォルトでは False になっています。これは、利便性とセキュリティの間の有効なトレードオフであると考えています。そうでないと感じる人は誰でも、fabfile をモジュール レベルで簡単に変更して、env.reject_unknown_hosts = True に設定できます。
http://docs.fabfile.org/en/1.5/usage/ssh.html#known-hosts-with-changed-keys
キーが変更された既知のホスト
SSH のキー/指紋追跡のポイントは、中間者攻撃を検出できるようにすることです。攻撃者が SSH トラフィックを自分の制御下にあるコンピューターにリダイレクトし、元の宛先サーバーになりすました場合、ホスト キーは合わない。したがって、SSH (およびその Python 実装) のデフォルトの動作は、以前に known_hosts に記録されたホストが突然別のホスト キーを送信し始めると、接続をすぐに中止することです。
一部の EC2 デプロイなどの一部のエッジ ケースでは、この潜在的な問題を無視することをお勧めします。これを書いている時点では、私たちの SSH レイヤーではこの正確な動作を制御することはできませんが、known_hosts の読み込みをスキップするだけで回避できます。比較対象のホスト リストが空の場合は問題ありません。この動作が必要な場合は、env.disable_known_hosts を True に設定します。デフォルトの SSH 動作を維持するために、デフォルトでは False です。
警告 env.disable_known_hosts を有効にすると、中間者攻撃に対して無防備になります! 注意して使用してください。