web-dev-qa-db-ja.com

MaxSessionsおよびMaxStartupsに関連するsshプロトコルのしくみ

sshdMaxSessionsMaxStartupsの設定に関連する質問があります。

以下のようにsshd設定のホストサーバーがあるとします。

MaxSessions 3, 
MaxStartups 10,
LoginGraceTime 1m

また、現在3つのsshセッションがホスト上に確立されており、セッションはしばらくの間終了しません。

その時点で、すでに3つのSSHセッションが実行されている間に、新しい(4番目の)SSH接続が確立されます。

4番目のssh接続はキー認証を使用し、キー認証に問題はありません。

4番目のssh接続のキー認証が成功した後、4番目の接続はどうなりますか?以下のような正しいシナリオはありますか?もしそうなら、それは何ですか?答えが#3の場合、正しい答えを教えていただけますか?

  1. 最大ですでにsshセッションが存在するため、4番目のssh接続はホストから切断されます。確立されたsshセッションの総数を超えることはできません。

  2. 最大で進行中のsshセッションがある場合でも、MaxStartupはその最大値を超えないため、4番目のssh接続は待機リストに含まれます。 4番目のssh接続は、ホストからの進行中のsshセッションが切断されるまで待機し、4番目のssh接続は、LoginGraceTimeが設定した時間1分を超えて待機することはできません。

  3. 上記のどちらでもない。

ありがとう。

2
Minsoo Park

私は、2つの指令のどちらもあなたが思っていることをしていないと思います。


MaxSessions

ネットワーク接続ごとに許可されるオープンシェル、ログイン、またはサブシステム(sftpなど)セッションの最大数を指定します。複数のセッションは、接続の多重化をサポートするクライアントによって確立される場合があります。 MaxSessionsを1に設定すると、セッションの多重化が事実上無効になりますが、0に設定すると、転送を許可しながら、すべてのシェル、ログイン、およびサブシステムセッションが防止されます。デフォルトは10です。

このコンテキストでは、「セッション」は接続ではなく、1つの接続内の仮想チャネルです。ほとんどのクライアントは複数のチャネルを利用できないため、ほとんどの場合、この制限に直面することはありません。または、そうである場合は、あまり使用されていない/既知のシナリオではありません。


MaxStartups

SSHデーモンへの認証されていない同時接続の最大数を指定します。追加の接続は、認証が成功するか、接続のLoginGraceTimeが期限切れになるまでドロップされます。デフォルトは10:30:100です。または、コロンで区切られた3つの値start:rate:fullを指定することでランダム早期ドロップを有効にすることもできます(例:「10:30:60」)。 sshdは、現在開始(10)の認証されていない接続がある場合、rate/100(30%)の確率で接続の試行を拒否します。確率は直線的に増加し、認証されていない接続の数がいっぱい(60)に達すると、すべての接続試行が拒否されます。

したがって、「起動」制限は、認証が行われる前でも評価されます。

1
Martin Prikryl