我在几台远程服务器上运行ssh,有些服务器没有响应,有些服务器可能已关闭。
为了排除这种情况,我在ssh命令中使用了ConnectTimeout
。当我配置它时,它超时了。
我目前的做法ssh
ssh -o LogLevel=Error -oConnectTimeout=5 -oBatchMode=yes -l becomeaccount servername './command.sh'
直到有一天我在我的一台服务器上发现过时的ssh连接时,一切都很顺利。它持续了3天以上。
所以现在我觉得我可能错过了一些东西,我试着去谷歌,发现有一种叫做ServerAliveInterval
的东西......会解决我的问题吗?它与ConnectTimeOut
有什么不同?
答案 0 :(得分:1)
" ServerAliveInterval"指定SSH服务器和客户端之间的定期轮询时间。意图是双重的:
(1)关闭空闲的ssh会话 [a]一方或另一方严重崩溃(即:机器故障/断电) [b]一方或另一方更改IP地址
(2)通过NAT维护空闲的ssh会话,以便拆除(或终止)空闲的TCP会话
ServerAliveInterval会影响" ssh"客户。对于" sshd"有相应的参数。服务器。 (还有一个TCPKeepAlive选项。)如果您在远程服务器上看到孤立的sshd会话,则应考虑在远程服务器的sshd_config中进行适当的更改。如果您无法在远程服务器的sshd_config中实现更改但仍需要空闲登录,请检查您的shell是否有空闲超时(" bash"确实如此)。