
# VS Code连接后长时间未操作，连接自动断开
#### 问题现象
VS Code SSH连接后，长时间未操作，窗口未关闭，再次使用发现VS Code在重连环境，无弹窗报错。左下角显示如下图：
![](https://support.huaweicloud.com/trouble-modelarts/figure/zh-cn_image_0000001399055982.png)
查看VS Code Remote-SSH日志发现，连接在大约2小时后断开了：
![](https://support.huaweicloud.com/trouble-modelarts/figure/zh-cn_image_0000001449456041.png "点击放大")
#### 原因分析
用户SSH交互操作停止后一段时间，防火墙对空闲连接进行了断开操作，SSH默认配置中不存在超时主动断连的动作，但是防火墙会关闭超时空闲连接（参考：http://bluebiu.com/blog/linux-ssh-session-alive.html），后台的实例运行是一直稳定的，重连即可再次连上。
#### 解决方法
如果想保持长时间连接不断开，可以通过配置SSH定期发送通信消息，避免防火墙认为链路空闲而关闭。
- 客户端配置（用户可根据需要自行配置，不配置默认是不给服务端发心跳包），如[图1]，[图2]所示。
  图1打开VS Code ssh config配置文件   
  ![](https://support.huaweicloud.com/trouble-modelarts/figure/zh-cn_image_0000001398736250.png "点击放大")
  图2增加配置信息   
  ![](https://support.huaweicloud.com/trouble-modelarts/figure/zh-cn_image_0000001449215885.png "点击放大")
  配置信息示例如下：
  ```
  Host ModelArts-xx   
      ……   
      ServerAliveInterval 3600  # 增加这个配置，单位是秒，每1h向服务端主动发个包   
      ServerAliveCountMax 3  # 增加这个配置，3次发包均无响应会断开连接
  ```
  比如防火墙配置是2小时空闲就关闭连接，那客户端配置ServerAliveInterval小于2小时（比如1小时），就可以避免防火墙将连接断开。
  

- 服务器端配置（Notebook当前已经配置，24h应该是长于防火墙的断连时间配置，该配置无需用户手工修改，写在这里仅是帮助理解ssh配置原理）配置文件路径：/home/ma-user/.ssh/etc/sshd_config ![](https://support.huaweicloud.com/trouble-modelarts/figure/zh-cn_image_0000001399215954.png "点击放大")
  每24h向client端主动发个包，3次发包均无响应会断开连接
  参考：https://unix.stackexchange.com/questions/3026/what-do-options-serveraliveinterval-and-clientaliveinterval-in-sshd-config-d
  

- 对于业务有影响的需要进行长链接保持的场景，尽量将日志写在单独的日志文件中，将脚本后台运行，例如：
  ```
  nohup train.sh > output.log 2>&1 & tail -f output.log
  ```
  
 
