Sublime Text 本身不支持远程连接,必须依赖 SFTP 插件实现;90% 的连接或上传失败源于项目未绑定、sftp-config.json 位置/命名/字段错误,或 SSH 认证(密钥权限、sshd_config 配置、remote_path 写入权限)未对齐。

Sublime Text 本身不支持远程连接,必须用 SFTP 插件实现;但装完插件、写好配置却连不上或不上传——90% 的问题出在项目未绑定、sftp-config.json 放错位置、或 SSH 认证没对齐。
右键没 SFTP 菜单?先确认项目和文件夹是否“被识别”
插件只在「有项目」且「侧边栏显示了可映射的文件夹」时才激活菜单。它不响应单个文件、空白区域、临时打开的文件夹,也不认“打开文件夹”这种无项目状态。
- 必须通过
Project → Add Folder to Project把本地目录加进项目,让它出现在侧边栏顶层 - 右键操作对象只能是侧边栏中那个文件夹图标本身,不是里面的文件,也不是空白处
- 安装插件后务必重启 Sublime Text,否则
Project菜单里看不到 SFTP 项,右键也无响应 - 别选错插件:ST4 用户必须装
SFTP-Next,ST3 用户认准作者wbond的SFTP,别用sftp-client或FTPSync
sftp-config.json 必须放对位置、字段一个都不能错
这个文件不是全局配置,而是严格绑定到你右键的那个文件夹根目录下。名字错一个字符、路径少一个斜杠、字段多一个空格,都会静默失败——不报错、不提示、不上传。
- 文件名必须是
sftp-config.json(全小写、无空格、无额外后缀),不能是SFTP-config.json或sftp_config.json -
host填 IP 或域名,不能带ssh://;端口用单独的port字段,不要拼在host后面 - 密钥登录:删掉
password字段(留空字符串"password": ""会导致插件仍走密码认证并失败) -
private_key(ST4)或ssh_key_file(ST3)必须写绝对路径:/home/you/.ssh/id_rsa(Linux/macOS)或C:/Users/You/.ssh/id_rsa(Windows) -
remote_path必须以/开头,结尾也建议加/(如"/var/www/html/"),否则路径拼接会偏移
upload_on_save 设为 true 却没上传?检查三个隐性前提
这个开关只是触发器,不是万能同步开关。它依赖项目上下文、路径匹配和配置层级,缺一不可。
-
"upload_on_save": true必须写在sftp-config.json的根对象层级,不能嵌套在files或sync_down_on_open下面 - 当前编辑的文件必须属于已映射的项目目录及其子目录;打开桌面一个
.js文件,哪怕配置文件存在,也不会触发上传 - 文件相对于项目根目录的路径,要能与
remote_path对齐。例如:remote_path: "/var/www/html/",你改的是src/js/app.js,那它会被传到/var/www/html/src/js/app.js—— 如果你希望传到/var/www/html/js/app.js,就得调整本地目录结构或加local_path - 网络抖动或服务器响应慢时,默认 3 秒超时会静默失败,可在配置里加
"timeout": 10
上传失败却没报错?必须看控制台日志
弹窗提示 “Permission denied” 或直接无声失败,根本不是网络问题,而是 OpenSSH 底层被拦截了。插件不复用终端里的 ssh-agent,也不继承你的免密登录状态。
- 按
Ctrl+Shift+P(macOS 是Cmd+Shift+P)→ 输入SFTP: Show Console回车,所有ssh/sftp命令和错误都会实时打印 - 常见真因:
private_key权限不是600(Linux/macOS 下执行chmod 600 ~/.ssh/id_rsa) - 远程服务器
/etc/ssh/sshd_config中PubkeyAuthentication被设为no -
remote_path目录对当前用户不可写(比如www-data用户没权限写入/var/www/html/) - 即使你在终端能免密
ssh登录,SFTP 插件也不会复用那个状态
最常被忽略的一点:SFTP 插件没有锁机制、不比对版本、不解决冲突。多人协作或服务端被其他方式修改时,upload_on_save 会直接覆盖远程文件,且失败也不回滚。

















