Sublime Text 本身不支持远程 SFTP,所谓“实时同步”只是插件监听保存事件后单向上传;必须满足项目绑定、配置位置、SSH 认证三者同时成立,缺一不可,且 sftp-config.json 必须由右键“Map to Remote…”在项目根目录自动生成,文件名严格为小写、无空格,remote_path 以/开头,upload_on_save 为布尔值 true 并置于根层级,超时可设 timeout 提高容错。

Sublime Text 本身不支持远程 SFTP,所谓“实时同步”只是插件监听保存事件后单向上传——能用,但必须满足项目绑定、配置位置、SSH 认证三者同时成立,缺一不可。
右键没出现 SFTP 菜单?先确认项目结构和触发层级
插件只响应「已加入项目的顶层文件夹」的右键操作,对单个文件、桌面打开的文件、或“打开文件夹”临时视图完全无感。
- 必须通过
Project → Add Folder to Project把本地目录加进项目,且该目录要出现在侧边栏最顶层 - 右键对象只能是那个文件夹图标本身,不是里面某个
.js文件,也不是侧边栏空白处 - Sublime Text 4(Build 41xx)必须装
SFTP-Next,原版SFTP会报ImportError: No module named 'urllib3' - 装完插件后务必重启 Sublime Text,否则
Project菜单里都看不到 SFTP 项
sftp-config.json 放哪、怎么写、为什么静默失败
这个文件不是全局配置,也不接受手动创建——插件只读取通过右键 Map to Remote… 在项目根目录自动生成的 sftp-config.json。名字大小写、路径、内容格式错一个就失效。
- 文件名必须严格为
sftp-config.json(不能是SFTP-config.json、sftp_config.json或带空格) -
remote_path必须以/开头,结尾建议也加/(如"/var/www/html/"),否则路径拼接会偏移 -
ssh_key_file支持~展开(如"~/.ssh/id_rsa"),但不识别$HOME或其他环境变量 - 同时写了
password和ssh_key_file?SSH 层会直接拒绝,错误信息只显示Authentication failed,无具体提示
upload_on_save 不生效?盯住这四件事
实时同步不是开关一开就自动跑,它依赖隐性上下文:项目已保存、路径匹配、认证成功、超时容忍足够。
-
upload_on_save必须放在配置文件根层级,不能嵌套在files或sync_down_on_open下面 - 当前文件必须属于已保存的项目(即存在
.sublime-project文件),且该文件路径需能被remote_path规则覆盖(比如配了"/var/www/html/",但你在/src/index.js编辑,就不会上传) - 网络抖动或服务器响应慢时,默认 3 秒超时会导致静默失败;可在配置中加
"timeout": 10提高容错 -
upload_on_save写成了字符串"true"(带引号)——必须是布尔值true,JSON 里不加引号
上传后远程权限变成 600?别让网页打不开
SFTP 插件默认用用户主目录权限掩码上传,web 目录通常需要 644(文件)或 755(目录),否则 Nginx/Apache 拒绝读取。
- 在
sftp-config.json中显式加"default_permissions": "644"(字符串格式,不是数字) - 如果服务器端
/var/www/html所属用户不是你 SSH 登录的用户,即使权限设对,仍可能因 SELinux 或挂载选项被拦截 - 中文文件名上传失败,大概率是服务器
locale不是en_US.UTF-8,插件按 UTF-8 发送路径,而服务端用 Latin-1 解析,结果乱码或 404
最容易被忽略的是:插件不会告诉你哪里错了,它只在状态栏闪一下文字就消失;所有配置都必须精确到字符、路径、层级,没有容错余地。一旦上传失败,先看输出面板(Tools → SFTP → Show Output),而不是反复改 JSON。


















