Sublime Text 本身不支持远程连接,必须安装 SFTP 插件;但插件需重启生效、仅在已加载项目且侧边栏显示文件夹时激活右键菜单,sftp-config.json 必须置于项目根目录、严格命名、正确填写 host/user/remote_path/ssh_key_file,upload_on_save 仅对已映射目录生效且无失败回滚机制。

Sublime Text 本身不支持远程连接,必须靠 SFTP 插件实现;但装完插件 ≠ 能用,90% 的失败都卡在项目绑定、配置位置或 SSH 认证细节上——不是插件坏了,是触发条件没满足。
右键没 SFTP 菜单?先确认项目和文件夹状态
插件只在「已加载项目」且「侧边栏显示可映射的文件夹」时才激活右键菜单。它不响应单个文件、空白区域、未添加到项目的目录,也不认“打开文件夹”这种临时视图。
- 必须通过 Project → Add Folder to Project 把本地目录加进项目,让它出现在侧边栏顶层
- 右键目标只能是侧边栏中那个文件夹图标本身(不是里面的文件,也不是标签页)
- 安装插件后务必重启 Sublime Text——否则
Project菜单里都看不到SFTP项 - 确认安装的是作者为
wbond的官方SFTP,别选sftp-client或FTPSync
sftp-config.json 必须放对位置、写对格式
这个文件不是全局配置,而是严格绑定到你右键的那个文件夹根目录下。名字、大小写、扩展名一个都不能错:必须叫 sftp-config.json,不能是 SFTP-config.json、sftp_config.json 或 sftp-settings.json。
-
remote_path必须以/开头,结尾也建议加/(如"/var/www/html/"),否则路径拼接会偏移 -
ssh_key_file支持~展开(如"~/.ssh/id_rsa"),但不识别$HOME或其他环境变量 - 用密钥登录时,
password字段必须完全删除,留空字符串("password": "")会导致插件仍走密码认证并失败 - Windows 路径要用正斜杠或双反斜杠:
"C:/Users/xxx/.ssh/id_rsa"或"C:\Users\xxx\.ssh\id_rsa"
upload_on_save 开了却没上传?检查三个隐性前提
这个开关只是“触发器”,真正决定是否上传的是路径匹配逻辑、项目上下文和配置层级位置。
-
upload_on_save必须设为true,且放在sftp-config.json的根对象层级,不能嵌套在files或sync_down_on_open下面 - 当前编辑的文件路径必须落在项目根目录(或
local_path)下,且其相对于该路径的子路径要能与remote_path对齐 - 插件不会自动重载配置——改完
sftp-config.json后,需右键文件 →SFTP → Reconnect才生效 - 若服务器响应慢,可在配置里加
"timeout": 10提高容忍度,避免静默失败
上传后权限错乱、中文路径失败、日志查不到?直接看控制台
弹窗没报错 ≠ 没问题。插件默认静默失败,真因藏在底层日志里。
- 按
Ctrl+Shift+P(macOS 是Cmd+Shift+P),输入SFTP: Show Console回车,所有 SSH 握手、路径解析、权限拒绝信息全在这里 - 远程文件权限变成
600?加"default_permissions": "644"(文件)或"755"(目录) - 中文文件名上传失败?大概率是服务器
locale不是en_US.UTF-8,先在服务器跑locale看输出,再执行localectl set-locale LANG=en_US.UTF-8并重启sshd - 本地能
ssh -i /path/key user@host连上,插件却连不上?说明插件调用的 ssh 参数和你终端不一致——插件不复用ssh-agent,每次都是全新调用
最常被忽略的一点:SFTP 插件没有锁机制,也不做冲突检测。多人共用同一远程目录时,upload_on_save 是单向覆盖,不会提醒你本地版本已过期。真要协同开发,得靠 Git,而不是依赖这个插件。

















