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

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

我有一個 bash 腳本,它使用scp.所以scp這個腳本裡有一堆命令。 SSH 金鑰用於向其他伺服器進行身份驗證。

由於檔案非常小,因此 SSH 連線嘗試發生得非常快,而且根本不遠到腳本中,就會scp無限期掛起。

  • 沒有產生任何錯誤。
  • 網路設備已從等式中消除,伺服器在同一子網路上進行即時通訊。
  • rsync問題也已證明。

如果sleep這些 scp 呼叫之間間隔 1 秒,則腳本運行平穩,不會掛起。

我應該在哪裡尋找這種明顯的速率限制?我在任何其他伺服器之間都沒有看到這一點...

答案1

有時人們設定使用 iptables 進行速率限制

OpenSSH 具有MaxStartups對傳入客戶端進行某些速率限制的選項。預設值(至少在我的電腦上)是10:30:100.

人 sshd_config

或者,可以透過指定三個冒號分隔的值 start:rate:full(例如「10:30:60」)來啟用隨機提前丟棄。如果目前有 start (10) 個未經身份驗證的連接,則 sshd(8) 將以速率/100 (30%) 的機率拒絕連接嘗試。如果未經驗證的連線數量達到滿 (60),機率會線性增加,並且所有連線嘗試都會被拒絕。

另一個半常見問題和 OpenSSH 連線延遲的原因與 OpenSSH 伺服器上的一項功能有關,該功能將嘗試在連線嘗試時對傳入 IP 位址進行反向查找。我相信它需要這個 DNS 功能來與一些舊的 rhost 相容的身份驗證方法相容,我認為幾乎沒有人再使用這些功能。無論如何,如果 DNS 解析器配置不當、配置為使用損壞的解析器,或者客戶端 IP 連接的反向區域的某些內容可能損壞,則 DNS 解析功能將導致問題。

理想情況下,答案是修復 DNS 並確保您的 DNS 始終正常運作且不會出現錯誤,並且能夠快速回應。但如果您不需要 DNS 解析,那麼這裡的一個快速解決方案是阻止伺服器嘗試解析名稱。設定UseDNS no在你的sshd_config.

相關內容