Linux

為什麼我的 ssh 超時因網路位置而異?

  • August 14, 2015

當我從家里通過 ssh 連接到我們的一台辦公伺服器(執行 Fedora 10)時,我的會話在相當短的活動時間(5 分鐘左右)後超時。我試過TcpKeepAlive在客戶端使用,沒有效果。

我不明白的是,如果我在公司區域網路的辦公室裡,我可以讓會話整天處於非活動狀態而不會超時,所以這種行為似乎取決於我的位置。

任何想法為什麼會發生這種情況以及當我不在 LAN 上時如何防止超時?如果有幫助,我將在 Mac OSX 上使用終端客戶端。

更新- Dave Drager 建議使用ServerAliveInterval非零設置TcpKeepAlive=no對我有用。關於其他一些答案,ClientAliveMac OSX SSH 客戶端不接受 … 設置。

這裡有一個關於這個問題的很好的文章。

他們建議:

ssh -o TCPKeepAlive=yes

要麼:

ssh -o TCPKeepAlive=no -o ServerAliveInterval=15

但是,我確實在我的工作場所遇到了一個問題,我與會話斷開連接,而在家裡他們很好。我相信我的防火牆 (SonicWall) 可能與 TCPKeepAlive 發生衝突,可能是因為 NAT。

幸運的是,我的 SSH 客戶端 SecureCRT 有一個“NO-OP”協議選項,我相信它基本上會向伺服器發送一個不執行任何操作的命令。通過手動啟用它,我可以保持連接。不確定 MacOSX 終端客戶端有什麼與此類似的。有一篇關於如何在命令行上實現“NO-OP”的文章。

最後,您可能希望使用 Wireshark 或其他嗅探器來觀察您的實際 TCP 連接,以了解它發生了什麼。這將是了解為什麼它偶爾仍會斷開連接的最後方法。

引用自:https://serverfault.com/questions/27365