2

背景: OpenSSHのデフォルト設定MaxStartupsは 10:30:60 で、ほとんどの Linux ディストリビューションはこのデフォルトを維持しています。つまり、sshd が新しい着信接続の 30% をドロップし始める前に、キーを交換して認証する ssh 接続は一度に 10 個しか存在できず、認証されていない接続が 60 個になると、すべての新しい接続がドロップされます。接続がセットアップされると、この制限に対してカウントされません。たとえば、この質問を参照してください。

問題: GNU 並列を使用して、多数のバックエンド ノードで大量のデータ処理を実行しています。単一のフロントエンド マシンからこれらのノードにアクセスする必要があり、ssh:s を使用しProxyCommandてバックエンドに透過的にアクセスするためのトンネルを設定しています。ただし、フロントエンドが一度に認証できる数よりも多くの ssh 接続が並列に生成されているため、認証されていない接続の最大制限に常に達しています。

ControlMaster autoフロントエンドへの単一の接続を再利用しようとしましたが、うまくいきませんでした。

質問:新しい ssh 接続が開かれる速度を制限するにはどうすればよいですか? 特定の時間に開いている認証されていない接続の数を制御し、別の接続が認証されるまで新しい接続を遅らせることはできますか?

4

2 に答える 2

1

GNU Parallel には、「ホストごとに 1 秒あたり最大でこの数のジョブを生成する」オプションが必要だと思います。MaxStartups = 10:30:60 の高速 CPU を備えたホストでデフォルトが機能することはおそらく理にかなっていますが、遅延は 500 ミリ秒です。

parallel@gnu.org で議論できますか?

編集:

--sshdelay はバージョン 20130122 で実装されました。

于 2012-08-02T07:12:57.793 に答える
0

静止画を使用ControlMaster autoするのは良い方法のように思えます。MaxStartups単一の接続を開いたままにしておく (そしてその接続でセッションを開く) ため、ヒットしないはずです。どのような点でうまくいきませんでしたか?

セットアップをControlMaster考えると、動作を妨げる可能性のあるその他の関連設定は次のとおりです。ProxyCommandControlPath

  • ControlPath %r@%h:%p- ソケットに名前を付ける{user}@{host}:{port}

ControlPersist:

  • ControlPersist yes- 終了するように指示されるまで (閉じられていても) 初期接続を維持します ( -O exit)
  • ControlPersist 1h- 1時間持続
于 2012-08-03T14:46:28.873 に答える