当设置好Putty并用ssh方式登陆到阿里云ECS实例,可以比网页控制台登陆更方便,操作的延迟更小,更加接近原生的tty窗口操作。但刚配置好时,如果一段时间内putty如果转入后台,它会自动下线并提示Network error,如下图:

PuttyerrorMsg.png

原因是Putty默认的保证ssh连接持续的Sending of null packets to keep session active属性设置为0,即默认不发送保持接的null packet包,如下图:

puttykeepalive.png

解决方法:

  • 在Putty的设置页面选择Connection项,在右边的Seconds between keepalives(0 to turn off)设置项下

填入一个大于0的值,单位是秒,如果要让连接保持更长时间, 那么就填入一个比原来大的数,建议填100左右。

  • 在服务器的ssh配置文件/etc/ssh/sshd_config中插入设置选项:TCPKeepAlive yes

  • 服务器相关设置选项的说明:

    • TCPKeepAlive:是否应该向 client 发送 TCP keepalive 信息

    • ClientAliveInterval:设置超时间隔(以秒为单位),如果没有从 client 接收到数据,SSH 将通过加密通道发送消息,请求 client 响应。默认值为 0,表示不会将这些消息发送到 client

    • ClientAliveCountMax:设置在 SSH 没有收到任何消息的情况下向 client 发送keepalive 消息的数量。如果达到了该阈值,SSH 将断开与 client 的连接,终止会话(默认值为 3)