sublime text 本身不支持远程连接,所有连接均依赖sftp插件;90%失败源于版本错配(st4须用sftp-next)、ssh认证失败或项目未激活。

Sublime Text 本身不支持远程连接,所有“连上服务器”动作都依赖 SFTP 插件;但装上插件 ≠ 能连——90% 的失败不是配置写错,而是版本错配、SSH 认证链路不通、或项目上下文没激活。
怎么确认该装 SFTP 还是 SFTP-Next
打开 Help → About Sublime Text,看 Build 号:
- Build 41xx(如
4143)→ 必须装SFTP-Next;装原版会报ImportError: No module named 'urllib3',菜单直接消失 - Build 3xxx(如
3211)→ 只能装作者为wbond的原版SFTP;搜到sftp-client或FTPSync都是错的 - 装完必须重启 Sublime,否则
Project菜单里看不到SFTP,右键也无响应
sftp-config.json 放哪、字段写错一个就静默失效
这个文件只对“右键映射的那个本地文件夹”起作用,且路径/命名/字段错一个字符就完全不生效:
- 文件名必须是
sftp-config.json(全小写、无空格、无额外后缀) - 必须放在项目根目录下——即侧边栏最顶层那个文件夹里,不能在子目录,也不能在桌面或用户主目录
-
host填 IP 或域名,不要带ssh://;端口单独写port字段,别拼在host后面 -
remote_path必须以/开头,结尾建议加/(如"/var/www/html/"),否则路径拼接可能偏移 - 密钥登录时删掉
password字段,用private_key,值必须是绝对路径:"/home/you/.ssh/id_rsa"或"C:/Users/You/.ssh/id_rsa";相对路径、~展开、权限非600都会导致Permission denied (publickey)
upload_on_save 不触发?检查这三个隐性前提
开了 "upload_on_save": true 却没上传,不是插件坏了,而是 Sublime 没把当前文件识别为“该同步的文件”:
- 当前文件必须在已映射的项目文件夹内及其子目录下;打开桌面一个
index.js,哪怕同目录有sftp-config.json,也不会上传 - 必须通过侧边栏右键本地文件夹 →
SFTP→Map to Remote…(或Setup Server)完成绑定;手动新建sftp-config.json不会自动激活映射 -
upload_on_save是布尔值,必须写true,不能写"true"字符串,也不能嵌套在files或sync_down_on_open下面 - 网络抖动或服务器响应慢时,默认 3 秒超时会静默失败;可在配置里加
"timeout": 10提高容忍度
为什么右键菜单没有 SFTP 选项
这不是安装失败,而是触发条件没满足。插件只在「已加载项目」且「侧边栏有可映射的文件夹」时才激活菜单项:
- 必须通过
Project → Add Folder to Project或Project → Save Project As…显式建立项目,不能只打开单个文件 - 右键目标必须是侧边栏中显示的文件夹(不是空白处、不是标签页、不是未保存的
untitled文件) - 安装后必须重启 Sublime Text —— Package Control 不会热加载 GUI 菜单项
- 确认安装的是作者为
wbond的SFTP,不是sftp-client或FTPSync等仿制品
真正卡住人的从来不是配置语法,而是 SSH 底层握手被拒:插件每次都是全新调用 ssh 命令,不复用终端里的 ssh-agent;private_key 权限不对、sshd_config 关了 PubkeyAuthentication、写了 password 又写 private_key,都会让连接静默失败。











