Sublime SFTP插件报Connection timeout,主因是底层网络敏感:host应填IP而非域名,需显式配置"connect_timeout": 60,并关闭服务器端UseDNS yes,再检查防火墙与安全组。

Sublime SFTP 插件报 Connection timeout,基本不是插件坏了,而是它底层调用 PuTTY 工具链(Windows)或 libssh2(macOS/Linux),对网络、SSH 配置和超时策略极其敏感——改个 IP 或加一行配置就能通。
为什么用域名连不上,换 IP 就行
根本原因是插件默认不设 DNS 超时,本地 DNS 解析慢时,几秒就放弃。而你用 ssh user@domain.com 能连,是因为 OpenSSH 有更宽容的解析逻辑;Sublime 的 SFTP 插件没有。
-
host字段务必填 IP 地址,例如"host": "192.168.1.100",别用example.com - 如果必须用域名,先在本地
ping example.com确认延迟低于 50ms;否则建议配 hosts 映射或直接切 IP - 云服务器若启用了弹性公网 IP 或 CDN 中转,域名可能解析到非目标机器,加剧超时
connect_timeout 不写等于没配
插件默认超时极短(Windows 下常为 3–5 秒),远低于 OpenSSH 的默认值。不显式声明,它不会等你 DNS 缓慢响应或服务器 SSH 启动慢。
- 在
sftp-config.json中加这一行:"connect_timeout": 60(单位:秒) - 数值别盲目设太高,60 是安全上限;超过说明网络或服务本身有问题
- 该字段只影响建立 TCP 连接+SSH 协议握手阶段,不影响后续上传下载
UseDNS yes 是服务器端的“隐形杀手”
很多 Linux 发行版或云镜像默认开启 UseDNS yes,导致每次连接都做反向 DNS 查询。插件无法跳过这步,一卡就超时。
- 登录服务器,编辑
/etc/ssh/sshd_config - 确认存在并改为:
UseDNS no - 执行
sudo systemctl restart sshd(或sudo service ssh restart) - 注意:改完后需用
ssh -v user@host验证日志里不再出现debug1: Hostname ... resolved
防火墙和安全组经常漏查的点
看似端口开了,其实被中间设备限流或拦截。尤其云厂商的安全组默认不限制连接频率,但部分高防实例会主动丢弃短时高频新建连接。
- 检查服务器是否真在监听 22 端口:
ss -tlnp | grep :22或netstat -tlnp | grep :22 - 确认安全组/ACL 允许你的本地 IP 段(不是仅放行 0.0.0.0/0)
- 如果用的是 NAT 网关或跳板机,确保其连接跟踪表未满(
conntrack -L | wc -l超过 65535 就可能丢包) - 某些企业网络出口会拦截非标准 User-Agent 的 SSH 流量,可临时换手机热点测试
最麻烦的不是调参,而是错误信息从不告诉你卡在哪一层——它不区分是 DNS 卡住、TCP SYN 丢了,还是 SSH 服务压根没响应。所以排查必须按顺序:IP → connect_timeout → UseDNS → 安全组,跳过任意一步都可能白忙活半天。


















