
我有一個部署腳本,它使用 SSH 連接到多個主機。有時,主機會承受如此嚴重的負載,導致 ssh 嘗試掛起。這最終會導致部署超時,但只是在很長一段時間之後。
理想情況下,我希望腳本失敗的速度比 20 分鐘超時更快。
有沒有辦法檢測到 SSH 連線在一段時間後尚未建立,以便我可以以更受控的方式取消嘗試?
答案1
必須考慮以ConnectTimeout
以下方式設定連線逾時:
-o ConnectTimeout=1200
作為手冊頁ssh_config
選項指出:
指定連接到 SSH 伺服器時使用的逾時(以秒為單位),而不是使用預設的系統 TCP 逾時。僅當目標關閉或確實無法存取時才使用此值,而不是當目標拒絕連線時使用。
所以它在使用中看起來像這樣:
ssh -o ConnectTimeout=1200 [email protected]
FWIW,該ConnectTimeout
值(就像這樣的腳本中的許多內容一樣)是以秒為單位設定的值。所以 1200 秒等於 20 分鐘