Sublime Text 本身不支持直接打开 ssh:// 或 user@host:/path 这类远程路径,执行 subl 命令会静默失败或弹出空白窗口,因其内核仅解析本地路径和 file:// URL,完全忽略含 @、:、ssh:// 的字符串;所有远程编辑实际依赖两条独立路径:rsub(需本地插件+远程可执行文件+SSH 反向隧道 -R 52698:localhost:52698)或 SFTP 插件(下载-编辑-上传同步模型),二者机制不同、不可混用。

Sublime Text 本身不支持直接打开 ssh:// 或 user@host:/path 这类远程路径——执行 subl user@server:/var/www/index.php 会静默失败或弹出空白窗口,这不是配置问题,是内核根本不解析主机前缀。
为什么 subl 命令打不开 SSH 路径
Sublime 的 subl 命令只识别本地文件路径和 file:// URL,对任何含 @、:、ssh:// 的字符串一律忽略。你看到的“无法解析路径”错误或无响应,不是插件没装好,而是命令行入口压根没进到插件逻辑里。
所有所谓“远程编辑”,实际只有两条技术路径可走:
- rsub(RemoteSublime):靠 SSH 反向隧道把远程文件内容推给本地 Sublime,保存即写回远程磁盘
- SFTP 插件:把远程文件下载到本地临时缓冲区编辑,保存时再上传,走的是同步模型
二者机制完全不同,不能混用,也都不等于 VS Code 的 Remote-SSH 那种进程级远程会话。
rsub 必须配对启动且端口对齐
rsub 不是单靠插件就能跑起来的功能。它依赖三个硬性条件同时满足:
- 本地 Sublime 已安装并启用
rsub插件(状态栏右下角应显示rsub: ready) - 远程服务器上已部署可执行的
rsub(常见路径:/usr/local/bin/rsub,权限需为755) - SSH 连接必须带
-R 52698:localhost:52698参数(默认端口,不可省略)
常见翻车点:
- 用
ssh -R 52698:localhost:52698 deploy@your_local_ip连错了方向——远程要连的是你本地机器的localhost:52698,不是服务器自己 -
ssh_key_file写了~/.ssh/id_rsa:SFTP 插件不展开波浪号,必须写成绝对路径,如/home/deploy/.ssh/id_rsa - 远程执行
rsub /var/log/nginx/access.log但没加sudo:若当前用户无读权限,文件会打开为空白
SFTP 插件的 remote_path 不支持 ~ 展开
SFTP 插件读取 sftp-config.json 时,所有字段都按字面量处理,不做 shell 解析。写 "remote_path": "~/project" 实际访问的是 /home/user/~/project,必然报错或列空目录。
正确做法:
- 登录服务器后执行
pwd或echo $HOME确认主目录绝对路径 - 在配置中明确写死,例如:
"remote_path": "/var/www/html"或"remote_path": "/home/deploy/myapp" - 改完
sftp-config.json后必须重启 Sublime Text——插件不热重载配置
另外注意:"upload_on_save": true 对 rsub 打开的文件完全无效;rsub 保存是直写远程,而 SFTP 是先存本地再上传。同一项目里两者共存,极易导致刚保存就被覆盖。
两种方案的核心差异与选型建议
选 rsub 的典型场景:需要低延迟实时编辑日志、配置文件、调试临时脚本,且远程有 root/sudo 权限;它不落地、不缓存,适合“看一眼改一行就走”的轻量操作。
选 SFTP 的典型场景:项目结构完整、需版本比对、依赖本地构建流程、或远程权限受限(比如只能 sftp 用户);它提供浏览、下载、上传、差异对比等完整文件管理能力。
最容易被忽略的一点:rsub 的 save 行为绕过所有 SFTP 配置项(包括 sync_down_on_open、ignore_regexes),哪怕你在同一个文件夹里同时存在 sftp-config.json 和 rsub 进程,它们之间也完全无感知。混用不是功能叠加,而是冲突温床。


















