sublime text 本身不支持 ssh 直连编辑远程文件,仅能通过 sftp 插件(需 project 绑定、sftp-config.json 自动生成、upload_on_save 根层级配置)或 rsub(需 ssh 反向端口转发、远程运行 rsub、本地启用插件)实现远程编辑,二者机制互斥、不可混用。

Sublime Text 本身不支持 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提高容错 - 如果用了
rsub打开的文件,upload_on_save完全无效——因为 rsub 的保存是直写远程磁盘,不走 SFTP 同步流程
rsub 和 SFTP 绝对不能混用
RemoteSublime(rsub)不是 SFTP 的替代品,它是靠 SSH 反向端口转发把远程文件“拉”到本地打开的代理方案。
- 远程必须运行
rsub(常见路径:/usr/local/bin/rsub或~/bin/rsub),权限为755 - 本地必须安装并启用
rsub插件(Preferences → Package Settings → rsub → Settings),默认监听端口是52698 - SSH 连接必须带
-R 52698:localhost:52698参数,用~/.ssh/config配 alias 更可靠 - 不要在同一个项目里既用
rsub又启用 SFTP 的sync_up_on_save,否则可能刚保存完就被 SFTP 覆盖掉
真正容易被忽略的是:SFTP 的 upload_on_save 和 rsub 的“实时保存”本质不同,前者有本地副本、后者没有;一旦路径重叠又没隔离清楚,编辑几小时后发现远程文件被意外回滚,基本就是这两个机制在后台互相覆盖。











