ssh中的ConnectTimeout和ServerAliveInterval有什么区别
Whats the difference between ConnectTimeout and ServerAliveInterval in ssh
我正在几台远程服务器上执行 ssh,有些服务器没有响应,有些服务器可能已关闭。
为了排除这种情况,我在 ssh 命令中使用了 ConnectTimeout
。正如我配置的那样,它正在超时。
我目前的做法ssh
ssh -o LogLevel=Error -oConnectTimeout=5 -oBatchMode=yes -l becomeaccount servername './command.sh'
一切都很顺利,直到有一天我在我的一台服务器上发现了一个失效的 ssh 连接。开了三天多了。
所以现在我想我可能错过了什么,我尝试 google 它并发现有一个叫做 ServerAliveInterval
的东西...这能解决我的问题吗?它与 ConnectTimeOut
有何不同?
"ServerAliveInterval"指定SSH服务器和客户端之间的周期性轮询时间。意图是双重的:
(1) 关闭空闲的 ssh 会话
[a] 一侧或另一侧严重崩溃(即:机器 failure/poweroff)
[b] 一方或另一方更改 IP 地址
(2) 通过 NAT 维护空闲 ssh 会话,这会拆除(或终止)空闲 TCP 会话
ServerAliveInterval 影响 "ssh" 客户端。 "sshd" 服务器有一个相应的参数。 (也有一个 TCPKeepAlive 选项。)如果您在远程服务器上看到孤立的 sshd 会话,您应该考虑在远程服务器的 sshd_config 中进行适当的更改。如果您无法在远程服务器的 sshd_config 中实施更改,但仍需要停止空闲登录,请检查您的 shell 是否有空闲超时("bash" 有。)
我正在几台远程服务器上执行 ssh,有些服务器没有响应,有些服务器可能已关闭。
为了排除这种情况,我在 ssh 命令中使用了 ConnectTimeout
。正如我配置的那样,它正在超时。
我目前的做法ssh
ssh -o LogLevel=Error -oConnectTimeout=5 -oBatchMode=yes -l becomeaccount servername './command.sh'
一切都很顺利,直到有一天我在我的一台服务器上发现了一个失效的 ssh 连接。开了三天多了。
所以现在我想我可能错过了什么,我尝试 google 它并发现有一个叫做 ServerAliveInterval
的东西...这能解决我的问题吗?它与 ConnectTimeOut
有何不同?
"ServerAliveInterval"指定SSH服务器和客户端之间的周期性轮询时间。意图是双重的:
(1) 关闭空闲的 ssh 会话 [a] 一侧或另一侧严重崩溃(即:机器 failure/poweroff) [b] 一方或另一方更改 IP 地址
(2) 通过 NAT 维护空闲 ssh 会话,这会拆除(或终止)空闲 TCP 会话
ServerAliveInterval 影响 "ssh" 客户端。 "sshd" 服务器有一个相应的参数。 (也有一个 TCPKeepAlive 选项。)如果您在远程服务器上看到孤立的 sshd 会话,您应该考虑在远程服务器的 sshd_config 中进行适当的更改。如果您无法在远程服务器的 sshd_config 中实施更改,但仍需要停止空闲登录,请检查您的 shell 是否有空闲超时("bash" 有。)