我在自己的 mac 上使用 ssh 连接到远端 Linux 服务器,除非网络波动,一般不会出现连接断开(输入无响应)的问题。
但在 Windows 上,使用 PowerShell 自带的 ssh,连接到远端 Linux 服务器,很短一段时间不操作,就会发生断开。
这个现象应该是跟服务器端设置有关,但我不想修改服务器设置(用户无操作自动断开是个好特性)。既然 Mac 上可以不断开,win 上应该也可以在客户端设置上避免频繁断开。


解决方法就是令本地的 ssh client 每隔一段时间自动确认存活。避免服务器端将当前连接杀掉。具体操作:

Windows 自带的 OpenSSH 现在是默认安装的,很多人找不到配置文件在哪。默认配置文件路径:
C:\ProgramData\ssh

在该路径下新建/编辑文件:ssh_config 添加内容:
ServerAliveInterval 50
ServerAliveCountMax 3

之后重启 Power Shell,就可以在 ssh 访问远端服务器时保持会话连接了。

网上有些教程里同时建议修改(创建)了另一个文件 sshd_config
ClientAliveInterval 50
ClientAliveCountMax 3

但根据这两篇文章:

可知 sshd_config文件是针对当前机器作为服务器时的设定,也就是别人访问你的 win 主机时才会生效的设定。这个修改应该是不必要的。