我有一个部署脚本,它使用 SSH 连接到多个主机。有时,主机负载过重,导致 ssh 尝试挂起。这最终会导致部署超时,但只会在很长一段时间后才会发生。
理想情况下,我希望脚本失败的速度比 20 分钟超时更快。
有没有办法检测出在一定时间后尚未建立 SSH 连接,以便我可以以更可控的方式取消尝试?
答案1
必须研究通过ConnectTimeout
如下方式设置连接超时:
-o ConnectTimeout=1200
请参阅ssh_config
选项指出:
指定连接到 SSH 服务器时使用的超时时间(以秒为单位),而不是使用默认的系统 TCP 超时时间。此值仅在目标关闭或确实无法访问时使用,而不是在目标拒绝连接时使用。
因此它的使用方式如下:
ssh -o ConnectTimeout=1200 [email protected]
值得一提的是,该ConnectTimeout
值(与此类脚本中的许多内容一样)以秒为单位设置。因此 1200 秒相当于 20 分钟