解决在Mac中ssh登录后闲置时间过长而断开连接

2018-02-12

背景

当我们通过Mac终端连接服务器(比如阿里云的EC2),如果长时间不操作,一般服务器就会自动断开连接,这时候只能重新连接,感觉很麻烦。

原理

我发现其实在windows中用xshell通过ssh连接服务器就不会断开连接。

原理其实很简单,就是每隔一段时间客户端和服务器通信一次,比如发送一个消息,以此来保证服务器和客户端是活动状态,这样就永远不会存在超时断开连接的情况。

实际上只要修改一下ssh配置可以做到这一点。

配置

首先要找到本机(注意:是Mac,而不是服务器)的ssh的配置文件,在/etc/ssh/目录下, 可以看到ssh有两个配置文件

  • ssh_config: 这是ssh客户端的配置
  • sshd_config: 这是ssh服务端的配置,也就是当别的机器来连接本机的,配置ssh的行为

直接修改ssh_config文件

ServerAliveInterval 0 改为ServerAliveInterval 60

如果没有ServerAliveInterval 0

直接在ssh_config文件的最后加上ServerAliveInterval 60

以下就是我自己的ssh_config文件的内容

1
2
3
Host *
SendEnv LANG LC_*
ServerAliveInterval 60