11

一部のサーバー プロセスの自動化を改善しようとしています。ファブリックを使用しています。複数のホストを管理する必要があると予想されます。つまり、これまで SSH で接続されたことのないサーバーへの SSH 接続を確立する必要があります。その場合、SSH は常に接続の検証を要求するため、自動化が中断されます。

-o stricthostkeychecking=noコードを と同期するために使用する SSH コマンドのオプションを使用して、同じプロセスでこの問題を回避しましrsyncたが、Fabric との呼び出しでも使用する必要があります。

ssh 固有のオプション、特に上記のオプションを Fabric に渡す方法はありますか?

4

1 に答える 1

9

簡単な答えは次のとおりです。

  1. 新しいホストの場合、何も必要ありません。env.reject_unknown_hostsデフォルトはFalse
  2. キーが変更された既知のホストについては、変更され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 を有効にすると、中間者攻撃に対して無防備になります! 注意して使用してください。

于 2013-02-01T19:13:06.683 に答える