这是困扰我一年的问题!!!
我需要经常在办公室和家里通过 ssh 连接到我的远程服务器。通常,它在办公室工作得很好。但是在家时,ssh 连接会很快断开(或挂断)。有时当我回来两五分钟时,ssh session 已死,Ctrl+c
, Ctrl+z
和 Ctrl+d
没有效果。
最佳答案
这里有两个问题:
原因:普通 key 通过 ssh session 转发,因此它们现在无效。
解决方案:我们可以使用转义键序列(
Enter
~
.
)来关闭它。在挂机终端点击Enter
~
?
随后,它将向您显示支持的转义序列列表,如下所示:Supported escape sequences:
~. - terminate connection (and any multiplexed sessions)
~B - send a BREAK to the remote system
~C - open a command line
~R - request rekey
~V/v - decrease/increase verbosity (LogLevel)
~^Z - suspend ssh
~# - list forwarded connections
~& - background ssh (when waiting for connections to terminate)
~? - this message
~~ - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)
原因:这可能取决于您的网络类型和路由器。企业路由器比家用路由器更强大,可以保持长期连接。在家里,我们可能只有一个IP地址来自 ISP 和许多设备。通常,家庭路由器为了处理具有一个外部 IP 地址的多个设备,会创建一个 NAT 网络(WIFI)并为每个设备分配一个内部 IP 地址。当您的设备从互联网发送请求和接收响应时,家庭路由器需要维护一个
connection mapping table
使所有连接完美运行。但是 connection mapping table
很小,当它没有更多的容量时,它会丢弃一些认为死的连接,让新的连接加入。解决方案:在 SSH 版本 2 中,有一个“无操作”消息类型 (NOOP),可用于保持 ssh session 处于事件状态。在位于
~/.ssh/config
的 ssh 配置中添加以下配置默认情况下。Host *
ServerAliveInterval 300
号码300
可以根据你的路由器调整。希望这可以帮助其他人。
有没有人有任何其他建议?如果我的理解有误,请纠正我。
关于SSH连接一直卡在终端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57264903/