我遇到了 SSH 断线问题,断线是随机发生的。有时,它工作正常,有时我经常断线。断线后,我可以再次重新连接并继续工作。
客户端与目标服务器之间的 ssh 连接流程如下:
Client (C1) -> Intermediate Server (I) -> Destination Server (R1)
(Windows/Linux) -> (Linux + OpenVPN/IPTables) -> (Linux)
C1
从客户端到目标服务器的路由R1
总是通过中间服务器进行I
。
使用 Wireshark,每当我遇到断线问题时,我都可以看到收到的 RST 数据包。每当我遇到断线问题时,Wireshark 日志都会C1
显示R1
正在发送 RST tcp 数据包。
什么原因导致了这个问题?
答案1
无需深入研究您的具体问题,我发现这些配置行已经为我解决了类似的问题:
ClientAliveInterval 150
ClientAliveCountMax 10
它解决了由于链接延迟或不稳定而导致的断开连接问题。我并不是说这些值是完美的,但到目前为止它们对我来说是有效的。
答案2
打开 keepalive。将以下行添加到您的 .ssh/config:
ServerAliveInterval 60