我在自己的 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
但根据这两篇文章:
- https://prasadlinuxblog.wordpress.com/2012/09/13/what-is-the-difference-between-ssh_config-and-sshd_config/
- https://serverfault.com/questions/343533/changing-ssh-port-should-i-modify-only-sshd-config-or-also-ssh-config
可知 sshd_config
文件是针对当前机器作为服务器时的设定,也就是别人访问你的 win 主机时才会生效的设定。这个修改应该是不必要的。
CommandNotFound ⚡️ 坑否
请教一下,我按这个设置好像不生效,Win11,是什么原因呢, SecureCRT 是否默认底层用的 OpenSSH?
twisted
我想你自己已经回答了自己。
SecureCRT 是自己实现了一套闭源的 ssh,没有调用 OpenSSH。所以你像我这样给 openssh 做配置是不能生效的。应该找找 SecureCRT 自己的设置里面有没有类似选项