根本原因是sublime sftp插件底层调用putty工具链(pscp/plink),默认传输超时极短且不感知进度,需同时配置"timeout": 300、"ftp_passive_mode": true、remote_path以/结尾,并转openssh私钥为.ppk格式且用绝对路径指定。

为什么大文件上传总卡在 10% 就 timeout
根本不是网络慢,而是 Sublime SFTP 插件底层用的是 PuTTY 工具链(pscp/plink),默认超时极短(几秒),且不感知文件传输进度。一旦单个数据块响应延迟超过阈值,就直接断开重连,导致反复卡住、重传从头开始。
-
connect_timeout控制连接建立阶段的等待时间,对传输中卡顿无效 - 真正影响大文件的是
sync_down_on_open和sync_up_on_save触发的全量同步行为——它会先LIST远程目录再比对,而大目录下LIST响应慢,直接触发超时 - Windows 下若远程路径含空格或中文(如
E:/Program Files/...),pscp解析失败概率陡增,表现为“Connected”后立刻断开
必须改的三项配置:timeout、passive_mode、remote_path
仅调 connect_timeout 不够,得组合生效:
- 加
"connect_timeout": 60和"timeout": 300——前者管握手,后者管传输中任意操作(如LIST、PUT)的单次等待上限 - 强制启用被动模式:
"ftp_passive_mode": true,否则 NAT 或云防火墙常拦截主动模式的随机端口 -
remote_path必须以/结尾(如"/var/www/html/"),否则插件内部拼接路径时可能多出双斜杠,导致No such file错误并伪装成超时
私钥格式不对是静默失败主因
OpenSSH 的 id_rsa 直接填进 ssh_key_file 字段,插件会跳过密钥认证、退化为密码登录——而你没配 password,结果就是等几秒就报 Connection timeout,毫无提示。
- 必须用
puttygen.exe打开id_rsa,点击Save private key导出.ppk文件 -
ssh_key_file值写绝对路径,Windows 用正斜杠:"C:/keys/deploy.ppk",不能用波浪号或相对路径 - 确认服务器
~/.ssh/authorized_keys权限是600,且公钥内容与.ppk匹配(ssh-keygen -l -f id_rsa.pub对比指纹)
上传大文件前务必关闭 sync_on_save
保存即上传("upload_on_save": true)对小文件友好,但对 >50MB 文件极其危险:编辑保存瞬间触发完整上传,中途断开会丢失本地未暂存修改,且无法续传。
- 临时改为
"upload_on_save": false,用快捷键手动上传:Ctrl+Alt+u+F(单文件)或Ctrl+Alt+u+R(整个文件夹) - 上传前先执行
lcd切到本地文件所在目录,避免插件解析路径出错 - 上传中断后别急着重试——先检查远程目录是否残留
.filename.part临时文件,删掉再reput,否则续传位置错乱
最易被忽略的是:插件不会告诉你当前用的是 OpenSSH 还是 PuTTY 链路,所有超时都统一报 Connection timeout,但根源可能在密钥、DNS、被动模式三者之一。先验证 pscp 命令行能否成功传文件,再调 Sublime 配置,能省掉一半排查时间。











