SublimeJ是很多开发者用来做远程开发的工具,在使用过程中经常会出现远程连接超时断开的情况,这大多是因为SSH连接没有配置心跳保活机制,长时间无数据传输时连接被自动断开。要解决这个问题,需要从多个层面配置连接心跳。

SublimeJ远程超时的常见原因
出现远程超时断开的问题,主要有几个常见原因:
- 本地到远程服务器的网络存在NAT设备,长时间无数据传输时NAT表项过期,导致连接被丢弃
- SSH服务默认没有开启心跳保活机制,长时间无操作会自动断开空闲连接
- SublimeJ自身的连接参数没有配置保活选项,没有主动发送心跳包
本地SSH客户端心跳配置
首先可以配置本地SSH客户端的心跳参数,让客户端定期向服务器发送心跳包,维持连接活跃。不同系统的SSH客户端配置文件路径不同:
- Windows系统:配置文件路径为
C:Users用户名.sshconfig,如果没有该文件可以手动创建 - macOS和Linux系统:配置文件路径为
~/.ssh/config
在配置文件中添加以下内容:
# 对所有SSH连接生效
Host *
# 每60秒发送一次心跳包
ServerAliveInterval 60
# 最多发送3次心跳包没有响应就断开连接
ServerAliveCountMax 3
如果只想对特定服务器生效,可以把*替换成对应的服务器别名或者IP地址。
远程服务器SSH服务心跳配置
如果有权限修改远程服务器的SSH配置,也可以在服务器端开启心跳机制,让服务器主动检测客户端连接状态。修改服务器上的/etc/ssh/sshd_config文件,添加或修改以下参数:
# 每60秒向客户端发送一次心跳包 ClientAliveInterval 60 # 最多发送3次心跳包没有响应就断开连接 ClientAliveCountMax 3
修改完成后需要重启SSH服务让配置生效,不同系统的重启命令如下:
- CentOS/RHEL系统:
systemctl restart sshd - Ubuntu/Debian系统:
systemctl restart ssh - macOS系统:
sudo launchctl stop com.openssh.sshd && sudo launchctl start com.openssh.sshd
SublimeJ自身连接参数调整
除了SSH层面的配置,还需要检查SublimeJ的远程连接配置,确保没有设置过短的连接超时时间。打开SublimeJ的远程连接配置面板,找到连接超时相关的参数:
- 如果有
Connection Timeout选项,将其设置为0或者更大的数值,0表示不主动超时 - 检查是否有
Keep Alive相关的开关,将其开启
如果SublimeJ是通过SFTP插件实现远程连接,可以在插件的配置文件sftp-config.json中添加以下参数:
{
"host": "192.168.0.1",
"user": "root",
"password": "your_password",
// 连接超时时间,单位秒,0表示不超时
"connect_timeout": 0,
// 开启保活
"keepalive": true
}
配置验证方法
完成所有配置后,可以通过以下方式验证心跳是否生效:
- 建立SublimeJ远程连接后,长时间不操作,观察连接是否还会断开
- 在本地终端执行
ssh -v 用户名@服务器IP,查看连接过程中是否有心跳包发送的相关日志 - 在服务器端执行
netstat -an | grep SSH端口,观察连接的存活时间是否延长
如果配置后还是出现超时问题,可以检查网络是否存在其他限制,比如防火墙是否拦截了心跳包,或者网络运营商是否有连接时长限制。