如果建立连接需要超过 N 秒,如何取消 SSH 尝试?

如果建立连接需要超过 N 秒,如何取消 SSH 尝试?

我有一个部署脚本,它使用 SSH 连接到多个主机。有时,主机负载过重,导致 ssh 尝试挂起。这最终会导致部署超时,但只会在很长一段时间后才会发生。

理想情况下,我希望脚本失败的速度比 20 分钟超时更快。

有没有办法检测出在一定时间后尚未建立 SSH 连接,以便我可以以更可控的方式取消尝试?

答案1

必须研究通过ConnectTimeout如下方式设置连接超时:

-o ConnectTimeout=1200

请参阅ssh_config选项指出:

指定连接到 SSH 服务器时使用的超时时间(以秒为单位),而不是使用默认的系统 TCP 超时时间。此值仅在目标关闭或确实无法访问时使用,而不是在目标拒绝连接时使用。

因此它的使用方式如下:

ssh -o ConnectTimeout=1200 [email protected]

值得一提的是,该ConnectTimeout值(与此类脚本中的许多内容一样)以秒为单位设置。因此 1200 秒相当于 20 分钟

相关内容