ssh 远程长时间不操作就断开

最近在远程使用 jupyter notebook, 但是 vscode remote 时间一长就会断开,导致 notebook 的输出排版乱或者甚至连接断开,因此找到如下两种方法,一起使用后几乎没有断开过了.

主机定时连服务器

在主机的 ssh 配置中,设置如下来保持连接:

1
2
3
4
5
Host SomeRemoteHost
HostName MyRemoteHostName
User MyUsername
ServerAliveInterval 60
ServerAliveCountMax 30

注意:如果你的主机进入休眠模式,则不起效果.但是当你干别的事情时,它可以在后台保持连接

让服务器定时回连主机

编辑 sshd_config  配置文件 sudo vim /etc/ssh/sshd_config

在其中找到以下配置项目:

1
2
#ClientAliveInterval 0
#ClientAliveCountMax 3

去除注释并修改

1
2
ClientAliveInterval 60
ClientAliveCountMax 3

ClientAliveInterval  指定了服务器端向客户端请求消息的时间间隔, 默认是  0 , 不发送. 而  ClientAliveInterval 60  表示每分钟发送一次, 然后客户端响应, 这样就保持长连接了.

ClientAliveCountMax , 使用默认值  3  即可. ClientAliveCountMax  表示服务器发出请求后客户端没有响应的次数达到一定值, 就自动断开. 正常情况下, 客户端不会不响应.

macOS 重启  sshd service

1
2
sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist

或者

1
2
sudo launchctl stop com.openssh.sshd
sudo launchctl start com.openssh.sshd

参考资料

  1. Mac 使用 VS Code 配合 Remote Development 插件连接 Windows 远程服务器 | Henry

  2. Is there a way to reconnect to a disconnected VS Code Remote SSH connection? - Stack Overflow

  3. ssh - Running Jupyter Notebook in the background on remote server, get output - Stack Overflow