Linux Fedora では、ターミナルで同時に開く接続をどこで制限しますか?

Linux Fedora では、ターミナルで同時に開く接続をどこで制限しますか?

私はいくつかの Web サーバーを持っており、クラスターを管理するために、Python スクリプトを使用して接続を自動的に開き、ファイルをサーバーに同期するスクリプトを使用することがありますが、奇妙な問題が発生したのですが、それを修正する方法がよくわかりません。

テストケースを再現するには、すぐに接続しないリモート接続先(LAN や localhost ではない)が必要であり、パスワードを尋ねることなく接続が実行される(キーファイルを使用)必要があります。

私は Fedora を実行している PC を 16 台所有しており、サーバーには Cent OS 5、s120、s121 があります。これらは私が所有する 2 台のサーバーで、IP アドレスは/etc/hostss121 と s120 に割り当てられています。

これは、同じシェルで同時に s120 への 9 つの接続と s121 への 9 つの接続を開くサンプル コマンドです。そして、動作します。

gnome-terminal --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab
-  e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh
root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" -- tab 
-e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh
root@s121;\"" --tab -e "bash -c \"ssh root@s121;\"" --tab -e "bash -c \"ssh root@s121;\"" --tab 
-e "bash -c \"ssh root@s121;\"" --tab -e "bash -c \"ssh root@s121;\"" --tab -e "bash -c \"ssh
 root@s121;\"" --tab -e "bash -c \"ssh root@s121;\"" --tab -e "bash -c \"ssh root@s121;\"" --tab 
-e "bash -c \"ssh root@s121;\""

このコマンドは、同じシェル上で15の接続を開こうとします。15はすべてTO-> s120です。

gnome-terminal --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab
-e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh 
root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\""       
--tab - e   "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\""  --tab -e "bash 
- c \"ssh
 root@s120;\""  --tab -e "bash -c \"ssh root@s120;\""  --tab -e "bash -c \"ssh root@s120;\""  
--tab -e "bash -c \"ssh root@s120;\""  --tab -e "bash -c \"ssh root@s120;\""  --tab -e "bash -c 
\"ssh root@s120;\""

そして、15 の接続を開こうとしますが、すぐに 5 つのタブが閉じられ、10 の接続のみが開いたままになります。この問題はterminal_xfce、(gnome-terminal は少し安定性が低いため、こちらを好みます)でも発生します。

10を超える同時接続は許可されていないようです。

開始時に許可される同時接続数は 10 個までであるようですが、10 個のタブを開いて接続が開始されるのを待つと、同じサーバーへの 10 個のタブを持つ別のターミナルを開くことができます。

(このテスト結果は、クライアントとサーバーの両方で IP TABLES ファイアウォールが無効になっている場合も同じです)

また、この問題は、特に実行時に煩わしくlsyncdrsyncファイル システム上の複数の宛先を同じサーバーに同期すると、接続が OS によって終了されるため予期しない結果につながります。ターミナル テスト ケースは、処理の問題が少なくても、再現が簡単です。

答え1

すべての接続でスクリプト コマンドを使用する場合、gnome-terminal タブを使用する理由は何でしょうか。実際には必要のないリソースを大量に使用しており、それが制限要因の原因となっている可能性があります。

gnome-terminal を強制的に介入させるのではなく、システムに接続を処理させると、ほぼ (目的に応じて) 無制限の数の接続を取得できるはずです。

for a in $( seq 1 50 ); do
  ssh root@s120 my_cool_script &
  ssh root@s121 my_cool_script &
done
wait

これにより、数秒以内に100の接続(50からs120、50からs121)が作成され、すべて'私のクールなスクリプト'。何をするにしてもスクリプト化されている限り、順調に進みます。

「wait」コマンドを実行すると、スクリプトはバックグラウンド ジョブがすべて完了するまで待機してから続行します。これは必要ない場合もあります。

(さらに、入力する量も大幅に減ります...)

答え2

/etc/ssh/sshd_config で MaxStartups を探します。

  • sshd への不正な同時ログインを制限します。

  • デフォルトは 10 です。

関連情報