如果連線建立連線花了 N 秒,如何取消 SSH 嘗試?

如果連線建立連線花了 N 秒,如何取消 SSH 嘗試?

我有一個部署腳本,它使用 SSH 連接到多個主機。有時,主機會承受如此嚴重的負載,導致 ssh 嘗試掛起。這最終會導致部署超時,但只是在很長一段時間之後。

理想情況下,我希望腳本失敗的速度比 20 分鐘超時更快。

有沒有辦法檢測到 SSH 連線在一段時間後尚未建立,以便我可以以更受控的方式取消嘗試?

答案1

必須考慮以ConnectTimeout以下方式設定連線逾時:

-o ConnectTimeout=1200

作為手冊頁ssh_config選項指出:

指定連接到 SSH 伺服器時使用的逾時(以秒為單位),而不是使用預設的系統 TCP 逾時。僅當目標關閉或確實無法存取時才使用此值,而不是當目標拒絕連線時使用。

所以它在使用中看起來像這樣:

ssh -o ConnectTimeout=1200 [email protected]

FWIW,該ConnectTimeout值(就像這樣的腳本中的許多內容一樣)是以秒為單位設定的值。所以 1200 秒等於 20 分鐘

相關內容