Sublime Text 本身不支持 SSH 直连编辑,所谓“SSH 配置”实为通过 SFTP 插件模拟上传/下载或 rsub 端口转发代理;二者路径独立、不可混用,右键无 SFTP 菜单主因是未通过 Project → Add Folder to Project 将本地文件夹加入项目并置于侧边栏顶层,且必须安装匹配版本插件(ST4 用 SFTP-Next)、重启软件、由右键自动生成 sftp-config.json(严格命名、放根目录、remote_path 以/开头),upload_on_save 生效还需满足:布尔值 true 置于根层级、文件属已保存项目、路径匹配 remote_path、超时设置合理。

Sublime Text 本身不支持 SSH 直连编辑远程文件,所谓“SSH 配置”实际是通过 SFTP 插件模拟上传/下载,或用 rsub 做端口转发代理——两种路径完全独立,不能混用,选错就卡死。
为什么右键没出现 SFTP 菜单?
插件根本没触发,不是插件坏了,是 Sublime 没认出你操作的对象是“可映射的项目目录”。
- 必须通过 Project → Add Folder to Project 把本地文件夹加进项目,且该文件夹要出现在侧边栏最顶层
- 右键对象只能是那个文件夹图标本身,不是里面某个
.js文件,也不是侧边栏空白处 - Sublime Text 4(Build 41xx)必须装
SFTP-Next,原版SFTP会直接报ImportError: No module named 'urllib3' - 装完插件后务必重启 Sublime Text,否则
Project菜单里都看不到SFTP项
sftp-config.json 必须严格满足这四点
这个文件不是手动创建的全局配置,而是插件只读取“右键 → Map to Remote…”后自动生成在项目根目录下的唯一凭证。
- 文件名必须是
sftp-config.json(大小写敏感,不能是SFTP-config.json或sftp_config.json) -
remote_path必须以/开头,结尾也建议加/(如"/var/www/html/"),否则路径拼接会偏移 -
ssh_key_file支持~展开(如"~/.ssh/id_rsa"),但不识别$HOME或其他环境变量 - 同时写了
password和ssh_key_file?SSH 层直接拒绝,错误只显示Authentication failed,无具体提示
upload_on_save 不生效的四个隐藏条件
开关开着 ≠ 自动上传,它依赖一组隐性上下文,缺一不可。
-
upload_on_save必须放在配置文件根层级,不能嵌套在files或sync_down_on_open下面 - 当前文件必须属于已保存的项目(即存在
.sublime-project文件),且该文件路径需能被remote_path规则覆盖(比如配了"/var/www/html/",但你在/src/index.js编辑,就不会上传) - 网络抖动或服务器响应慢时,默认 3 秒超时会导致静默失败;可在配置中加
"timeout": 10提高容错 - 上传后远程权限变成
600?得显式设"default_permissions": "644",否则 Web 服务可能无法读取
rsub 方案连不上?先盯住这三个点
这是唯一接近“真 SSH 编辑”的方案,但依赖端口转发和远程进程,链路更长,出问题的地方也更多。
-
Connection refused:本地 Sublime 没装RSub插件,或插件未启用;检查 Sublime 控制台是否有RSub: listening on 127.0.0.1:52698 -
Permission denied (publickey):SSH 连接本身失败,和rsub无关;先确保ssh user@host能免密登录 - 文件打开了但内容为空/乱码:远程
rsub启动时工作目录不对,或文件权限限制(如/var/log/xxx需root权限运行rsub)
真正麻烦的不是配置项本身,而是 Sublime 对“项目上下文”的强依赖和静默失败机制——它不会告诉你哪一步漏了,只会不响应。最稳的做法是:先确认项目绑定成功,再生成配置,最后逐项验证认证方式与路径规则。


















