首页 >社区问答列表 >用ssh登录阿里云,一会儿不操作就失去响应了,怎么办?

用ssh登录阿里云,一会儿不操作就失去响应了,怎么办?

用ssh登录阿里云,一会儿不操作就失去响应了,怎么办?


  • 大家讲道理
  • 大家讲道理    2017-02-21 09:17:281楼

    原因

    这个事情比较繁琐,但不复杂:

    第一:ssh使用tcp长连接进行通信,这个长连接是没有保活心跳的,所以当连接建立但是双方都没什么事的时候(你不敲命令,服务器也不向你发什么更新数据),中间是没有数据包的。

    第二:从你的PC机,到你的公网出口,到互联网上,到阿里云防火墙,到你的阿里云主机,这一长过程可能会经过非常多个NAT设备和防火墙设备。以SNAT设备为例(常见的是家用路由器、公司路由器或防火墙,运营商CGN),这些设备会为你的这次TCP连接维持一个NAT会话(关于NAT的相关资料建议自学),如果这个会话在一定时间内有通信的话,就会刷新生存时间。如果这次会话双方确认断开连接,就会释放这个会话(这条TCP连接也不再通了)。然而这就有一个特殊情况,如果两个建立连接的双方都断网/死机了怎么办?这个会话应该也没用了,所以很多NAT设备会在这里设置一个最长生存时间,这个时间之内如果没有数据包通信,那就断开这个NAT会话。这就是你说的一段时间不操作就失去响应

    第三:除了NAT设备,链路上很多防火墙设备都会有类似限制。很多公司的公司防火墙都有这种设置,无数据的NAT会话存活时间也都是自行设定的。

    解决办法

    一个最简单的解决办法,就是保持有数据就行了。

    在闲着没事的时候打个top -c监控系统。

    小提示

    如果使用SecureCRT等工具,可以克隆当前会话,这个克隆的会话使用的是与被克隆会话相同的TCP连接,在克隆会话中top -c


    +0添加回复

  • 回复