Linux

快速、連續的 SSH 連接嘗試掛起

  • September 3, 2021

我有一個 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.

引用自:https://serverfault.com/questions/1076424