我正在几台远程服务器上进行 ssh,有些服务器没有响应,有些可能已关闭。
为了防止出现这种情况,我在 ssh 命令中使用了 ConnectTimeout
。正如我配置的那样,它超时了。
我目前的ssh
方式
ssh -o LogLevel=Error -oConnectTimeout=5 -oBatchMode=yes -l becomeaccount servername './command.sh'
一切都很顺利,直到有一天我在我的一台服务器上发现了一个陈旧的 ssh 连接。已经上线超过3天了。
所以现在我想我可能错过了一些东西,我尝试用谷歌搜索,发现有一个叫做ServerAliveInterval
的东西......这可以解决我的问题吗?它与 ConnectTimeOut
有何不同?
最佳答案
“ServerAliveInterval”指定 SSH 服务器和客户端之间的定期轮询时间。其目的有两个:
(1) 关闭空闲 ssh session ,其中任一 [a] 一侧或另一侧严重崩溃(即:机器故障/断电) [b] 一方或另一方更改 IP 地址
(2) 通过 NAT 维护空闲 ssh session ,这将拆除(或终止)空闲 TCP session
ServerAliveInterval 影响“ssh”客户端。 “sshd”服务器有一个相应的参数。 (还有一个 TCPKeepAlive 选项。)如果您在远程服务器上看到孤立的 sshd session ,您应该考虑在远程服务器的 sshd_config 中进行适当的更改。如果您无法在远程服务器的 sshd_config 中实现更改,但仍然需要终止空闲登录,请检查您的 shell 是否有空闲超时(“bash”有)。
关于unix - ssh中ConnectTimeout和ServerAliveInterval有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29210700/