当我从家里进入我们的一个办公室服务器(运行Fedora 10)时,我的会话在相当短的一段时间(5分钟左右)后超时.我尝试在客户端使用TcpKeepAlive,没有任何效果.
我不明白的是,如果我在公司局域网的办公室,我可以整天保持会话不活动而不会超时,所以行为似乎取决于我的位置.
任何想法为什么会发生这种情况以及当我不在局域网时如何防止超时?如果有帮助,我在Mac OSX上使用终端客户端.
更新 – Dave Drager建议使用ServerAliveInterval设置为非零,TcpKeepAlive = no对我有用.关于其他一些答案,Mac OSX SSH客户端不接受ClientAlive …设置.
解决方法
关于这个问题有一个很好的写作
here.
他们建议:
ssh -o TCPKeepAlive=yes
要么:
ssh -o TCPKeepAlive=no -o ServerAliveInterval=15
但是,我确实在我的工作现场遇到了一个问题,我在那里与会话断开连接,在家里他们没事.我相信我的防火墙(SonicWall)可能会被TCPKeepAlive淹没,可能是因为NAT.
我的SSH客户端SecureCRT幸运地有一个“NO-OP”协议的选项,我相信它基本上发送一个对服务器没有任何作用的命令.通过手动启用此功能,我可以保持连接状态.不确定MacOSX终端客户端有什么类似的东西.关于如何在命令行上实现“NO-OP”有一个writeup.
最后,您可能希望使用Wireshark或其他嗅探器来观察您的实际TCP连接,以了解它的用途.这将是了解为什么它偶尔会断开连接的最终方式.