设置SSH连接超时

时间:2012-04-19 22:11:43

标签: ssh timeout

我正在尝试减少ssh尝试打开与主机的连接的时间。如果我举例ssh www.google.com,则需要很长时间才能提示。

我读过有关使用ssh -o ConnectTimeout=10 www.google.com的内容,但即便这样也需要很长时间。我可以修改一些尝试来减少阻塞时间吗?

2 个答案:

答案 0 :(得分:55)

问题可能是ssh正在尝试连接{strong>所有 www.google.com解析为的不同IP。例如在我的机器上:

# ssh -v -o ConnectTimeout=1 -o ConnectionAttempts=1 www.google.com
OpenSSH_5.9p1, OpenSSL 0.9.8t 18 Jan 2012
debug1: Connecting to www.google.com [173.194.43.20] port 22.
debug1: connect to address 173.194.43.20 port 22: Connection timed out
debug1: Connecting to www.google.com [173.194.43.19] port 22.
debug1: connect to address 173.194.43.19 port 22: Connection timed out
debug1: Connecting to www.google.com [173.194.43.18] port 22.
debug1: connect to address 173.194.43.18 port 22: Connection timed out
debug1: Connecting to www.google.com [173.194.43.17] port 22.
debug1: connect to address 173.194.43.17 port 22: Connection timed out
debug1: Connecting to www.google.com [173.194.43.16] port 22.
debug1: connect to address 173.194.43.16 port 22: Connection timed out
ssh: connect to host www.google.com port 22: Connection timed out

如果我使用特定的IP运行它,它的返回速度会快得多。

编辑:我已定时(使用time),结果为:

  • www.google.com - 5.086秒
  • 173.94.43.16 - 1.054秒

答案 1 :(得分:3)

ConnectTimeout选项允许您告诉ssh客户端您在返回错误之前愿意等待连接多长时间。通过将ConnectTimeout设置为1,您可以有效地说"尝试最多1秒,然后如果您尚未连接,则会失败。

问题是,当您按名称连接时,DNS查找可能需要几秒钟。通过IP地址连接要快得多,并且实际上可以在一秒或更短的时间内工作。正在经历的是,每次通过DNS名称连接的尝试都不会在一秒钟内发生。 ConnectTimeout的默认设置遵循linux内核连接超时,这通常很长。