本指南說明如何使用 MaxStartups 和 MaxSessions 參數來限制用戶端連線至 OpenSSH 伺服器服務。
這些設定可協助您排除連線問題,並在高負載環境中管理未經驗證和已驗證的 SSH 會話。
癥狀
您可以使用 MaxStartups 和 MaxSessions 來解決下列類型的症狀。
症狀 1:用戶端無法連線到 OpenSSH 伺服器服務並建立工作階段。 此外,您可能會收到下列錯誤訊息:
- 連線被對等端重置
- 超過最大啟動次數
- 談判失敗
症狀 2:在支援工作階段多工 (每個連線多個工作階段) 的環境中,用戶端會連線並進行驗證。 不過,伺服器會中斷連線。
原因
症狀 1 表示有太多用戶端應用程式同時連線到 OpenSSH 伺服器服務。
症狀 2 僅限於多工複用環境。 這表示 OpenSSH 伺服器服務無法支援用戶端正在使用的會話數目。 設定後可能會發生此症狀MaxStartups。
如何使用參數
MaxStartups和 MaxSessions 是 sshd_config 檔案中的參數。 以下各節說明它們的運作方式。
MaxStartups
此 MaxStartups 參數會定義 OpenSSH 伺服器服務可以管理多少並行未經驗證的連線。 此設定在支援多個平行 SSH 連線的伺服器上特別有用,包括跳轉主機和佈建伺服器 (例如使用 Ansible 的伺服器)。 它在高負載環境或暴力攻擊期間也很有用。
值是一組三個整數,以冒號分隔,格式 Start:Rate:Full為 。 整數代表下列值:
- 開始:OpenSSH 伺服器服務在開始拒絕連線之前所支援的未驗證連線的數量。
-
速率:OpenSSH 伺服器服務捨棄連線的機率。 只要並發會話數低於該
Start值,服務就會忽略Rate。 但是,當並發連線數超過Start時,每個額外的連線都有Rate% 的機率會被丟棄。 -
已滿:當並行連線數超過
Full時,服務會捨棄所有其他連線。
例如,假設使用組態 MaxStartups 20:40:60的系統。 OpenSSH 伺服器服務會按如下方式管理連線:
- 此服務會保持前 20 個同時尚未驗證的連線。
- 從第 21 次連線嘗試開始,伺服器有 40% 的機率捨棄新的連線嘗試。
- 當服務達到 60 個並行未經鑑別的連線之後,伺服器會拒絕所有進一步的連線嘗試。
最大會話
MaxSessions 參數定義了 OpenSSH Server 服務允許每個網路連線開啟的 shell、登入或子系統(例如 sftp)會話的數量。 將 MaxSessions 設定為 1 有效停用會話多工。 將其設定為 0 可以防止所有 shell、登入及子系統會話,但允許端口轉發。 預設值是 10。
如何設定連線參數
若要修改 Windows OpenSSH 伺服器服務的參數,請修改sshd_config檔案,然後重新啟動 OpenSSH 伺服器服務。 若要這樣做,請遵循下列步驟:
使用系統管理員層級帳戶,開啟文字編輯器,然後開啟 \ssh\sshd_config%ProgramData%。 這些設定的預設文字應類似下列摘錄:
#MaxStartups 10#MaxSessions 10備註
MaxSessions通常出現在檔案的# Authentication區段內。MaxStartups通常出現在檔案稍後的一般選項清單中。若要啟用
MaxStartup或MaxSessions和 設定值,請編輯文字,使其類似於下列摘錄:MaxStartups 20:40:60MaxSessions 15備註
在此命令中,
20:40:60和15是範例值。 使用適合您環境的值。儲存並關閉sshd_config檔案。
若要驗證設定,請開啟 Windows PowerShell 命令提示字元視窗,然後執行下列命令:
sshd -t若要重新啟動 OpenSSH 伺服器服務,請開啟 Windows 命令提示字元視窗,然後執行下列命令:
NET STOP "OpenSSH SSH Server" && NET START "OpenSSH SSH Server"
服務重新啟動之後,它會使用新的參數值。
詳細資訊
- 「Windows Server 和 Windows 的 OpenSSH 伺服器設定」中sshd_config中的 Windows 設定
- sshd_config(5) - Linux 手冊頁
- sshd_config - OpenSSH 常駐程式組態檔
第三方資訊免責聲明
本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。 Microsoft對這些產品的性能或可靠性不作明示或暗示的保證。