Sublime Text 本身不支持远程连接,必须依赖插件;ST4 用户必须安装 SFTP-Next(非原版 SFTP),且需通过 Project → Add Folder to Project 添加项目、右键文件夹触发 Map to Remote 自动生成 sftp-config.json,该文件须置于根目录、全小写命名、含 host/user/remote_path 等必填项,upload_on_save 仅对已映射目录内文件生效。

Sublime Text 本身不支持远程连接,必须依赖插件;目前唯一稳定兼容 Sublime Text 4 的是 SFTP 插件(wbond 版,v3.16+),其他如 sftp-client、FTPSync、原版 SFTP(Python 2)均已失效或不兼容。
为什么右键没有 SFTP 菜单
不是插件没装好,而是触发条件缺失。SFTP 插件只在以下全部满足时才激活右键菜单:
- 已通过
Project → Add Folder to Project将本地目录添加进项目,且该目录出现在侧边栏顶层 - 右键对象是侧边栏中那个文件夹图标本身,不是里面的文件、空白处或标签页
- 安装的是作者为
wbond的官方SFTP(ST4 必须用SFTP-Next,Build 41xx 才能运行) - 安装后已重启 Sublime Text —— 不重启,
Project菜单里都看不到SFTP项
sftp-config.json 必须放对位置、写对格式
这个文件不是全局配置,它严格绑定到你右键的那个本地文件夹根目录下,且只认插件生成的版本:
- 文件名必须是
sftp-config.json(全小写、带连字符、.json 小写),不能是SFTP-config.json或sftp_config.json - 必须放在你右键的那个文件夹根目录下,不能在子目录、不能在
Packages/目录里 - 不能手动新建空文件再填内容 —— 必须通过右键 →
SFTP → Map to Remote…自动生成 -
remote_path必须以/开头,且是绝对路径(如"/var/www/html/"),不支持~/展开 - 密钥登录时,
password字段必须完全删除,留空字符串("password": "")会导致认证失败
upload_on_save 不生效的真实原因
设了 "upload_on_save": true 却没上传,根本不是开关坏了,而是同步上下文没建立:
-
upload_on_save必须写在sftp-config.json的根层级,不能缩进在files或sync_down_on_open下面 - 当前编辑的文件必须属于已映射的本地目录结构内 —— 编辑桌面一个
index.php,哪怕内容和服务器一样,也不会触发上传 - 路径匹配靠相对关系:若
local_path是/src,remote_path是/var/www/html,那么改/src/css/style.css才会传到/var/www/html/css/style.css - 网络超时默认 3 秒,大文件或弱网容易静默失败,可在配置中加
"timeout": 10
上传成功但网页报 500 或乱码怎么办
SFTP 插件只管传字节,不处理 Web 上下文,常见问题出在权限和编码上:
- 上传后文件权限是
600,但 PHP 脚本通常需644—— 在配置中加"file_permissions": "644",或上传后手动执行SFTP: Execute Command运行chmod 644 index.php - 中文文件名或内容乱码,多因服务器 locale 不一致,插件不转换编码 —— 建议统一用 UTF-8 保存本地文件,并确认服务器
LANG设置为en_US.UTF-8或类似值 - SELinux 或 AppArmor 可能拦截写入,上传日志显示 “Success” 但文件没出现,需登服务器查
ausearch -m avc -ts recent
最易被忽略的一点:SFTP 插件调用的是系统 ssh 和 sftp 命令,它不复用终端里的 ssh-agent,也不读取 ~/.ssh/config。所有认证参数必须显式写死在 sftp-config.json 里,少一个字段、错一个斜杠、权限不对,都会静默失败。

















