快速、連續的 SSH 連接嘗試掛起
我有一個 bash 腳本,它使用
scp
. 所以這個腳本中有一堆scp
命令。正在使用 SSH 密鑰對另一台伺服器進行身份驗證。由於文件非常小,SSH 連接嘗試發生得非常快,而且根本不會進入腳本,
scp
會無限期掛起。
- 沒有產生錯誤。
- 網路設備已從等式中刪除,並且伺服器在同一子網上實時通信。
- 問題也已被證明
rsync
。如果
sleep
在這些 scp 呼叫之間放置 1 秒,則腳本執行順利,不會掛起。我應該在哪裡尋找這種明顯的速率限制?我在我的任何其他伺服器之間都沒有看到這個…
有時人們使用 iptables 設置速率限制。
OpenSSH 具有
MaxStartups
對傳入客戶端進行某些速率限制的選項。預設(至少在我的電腦上)是10:30:100
.人 sshd_config
或者,可以通過指定三個冒號分隔的值 start:rate:full(例如“10:30:60”)來啟用隨機提前丟棄。如果目前有 (10) 個未經身份驗證的連接,sshd(8) 將以 rate/100 (30%) 的機率拒絕連接嘗試。如果未經身份驗證的連接數達到滿 (60),則機率線性增加,並且所有連接嘗試都將被拒絕。
OpenSSH 連接延遲的另一個半常見問題和原因與 OpenSSH 伺服器上的一項功能有關,該功能將嘗試在連接嘗試時對傳入的 IP 地址進行反向查找。我相信它需要這個 DNS 功能來與一些舊的 rhost 兼容的身份驗證方法兼容,我認為幾乎沒有人再使用這些功能了。無論如何,如果 DNS 解析器配置錯誤、配置為使用損壞的解析器,或者客戶端 IP 連接的反向區域的某些內容損壞,則 DNS 解析功能將導致問題。
理想情況下,答案是修復 DNS 並確保您的 DNS 始終正常工作且沒有錯誤,并快速回复。但是,如果您不需要 DNS 解析,那麼這裡的一個快速解決方案是阻止伺服器嘗試解析名稱。設置
UseDNS no
在您的sshd_config
.