Sublime Text 本身不支持 FTP/SFTP,必须依赖插件实现远程同步;关键在于项目绑定、配置文件由右键“Map to Remote…”自动生成、SSH 认证正确三者缺一不可。

Sublime Text 本身不支持 FTP 或 SFTP,所谓“连接服务器”只是通过插件模拟「本地编辑 → 自动上传」流程。能跑起来的关键不是装没装插件,而是项目绑定了、配置文件放对位置了、SSH 认证通了——三者缺一不可。
怎么确认该装 SFTP 还是 SFTP-Next
打开 Help → About Sublime Text 看 Build 号:
- Build 41xx(如 4143)→ 是 Sublime Text 4,必须装 SFTP-Next;装原版会报 ImportError: No module named 'urllib3'
- Build 3xxx(如 3211)→ 是 Sublime Text 3,装作者 wbond 的原版 SFTP 即可
- 别选 sftp-client 或 FTPSync,它们不兼容当前主流工作流
sftp-config.json 必须由右键生成,不能手建
插件只认「右键项目根目录 → SFTP/FTP → Map to Remote…」这一步触发的配置文件。手动新建一个空的 sftp-config.json,哪怕内容完全正确,也会被静默忽略。
- 先通过 Project → Add Folder to Project 把本地文件夹加进侧边栏(确保它是顶层文件夹)
- 右键这个文件夹图标本身(不是里面某个文件,也不是空白处)→ SFTP/FTP → Map to Remote…
- 自动生成的 sftp-config.json 必须全小写、带连字符、扩展名是 .json,名字错一个字母都不行
- 文件必须放在你右键的那个文件夹根目录下,不能在子目录里,也不能扔进 Packages 或用户目录
host/user/remote_path 缺一不可,认证字段不能共存
漏掉 host、user 或 remote_path,直接报 Connection failed: Invalid config;更隐蔽的问题出在认证字段冲突:
- 服务器禁密码登录(PasswordAuthentication no)?那就不能填 password 字段,必须删掉整行,只留 ssh_key_file
- ssh_key_file 要用绝对路径:/home/me/.ssh/id_rsa(Linux/macOS)或 C:/Users/me/.ssh/id_rsa(Windows),~ 可展开但 $HOME 不识别
- Linux/macOS 下密钥权限必须是 600:执行 chmod 600 ~/.ssh/id_rsa,否则认证失败但错误只显示 Authentication failed
- 同时写了 password 和 ssh_key_file → SSH 层直接拒绝连接,不会提示具体原因
- remote_path 必须以 / 开头,结尾建议也加 /(如 "/var/www/html/"),否则路径拼接会偏移
upload_on_save 不生效?检查项目上下文和 remote_path 范围
upload_on_save 不是全局开关,它只对「已映射目录下的文件」生效:
- 没项目(只打开单个文件或桌面 .txt)→ 配置完全无效,保存不会触发上传
- upload_on_save 默认是 false,必须显式设为 true
- 如果只改了子目录里的文件,但 remote_path 指向的是上层目录,上传仍会发生;但如果 remote_path 写窄了(比如只到 /var/www/,而你编辑的是 /var/www/html/app.js),路径匹配失败,上传也不会触发
- 输出面板没报错、右键菜单灰掉、点 Upload File 没反应——问题几乎全出在 SSH 层,不是 JSON 写错了,而是网络不通、服务端 SFTP 子系统未启用、或用户无权访问 remote_path
真正卡住人的地方从来不是语法,而是 Sublime 的项目绑定机制和 SSH 权限细节。很多人反复重装插件、改 JSON 格式,却没意识到自己根本没通过 Project → Add Folder to Project 把文件夹加进项目——右键菜单压根就不会出现。

















