sublime text 不支持原生 ssh 远程编辑,因 subl 命令仅解析本地路径和 file:// url,不识别 ssh uri;可行方案仅有 rsub(需反向隧道与插件配合)和 sftp 插件(需绝对路径、禁用波浪号、重启生效),二者均非流式编辑。

Sublime Text 本身不支持原生 SSH 远程编辑,所谓“SSH 隧道远程编辑”只有两种可行路径:一是用 rsub 配合反向端口转发(-R),二是用 SFTP 插件走 SFTP 协议同步文件——二者都不是流式编辑,也都不等于 VS Code 的 Remote-SSH 那种会话级连接。
为什么直接 ssh user@host:/path 在 Sublime 里打不开文件
Sublime Text 的 subl 命令只解析本地路径和 file:// URL,完全忽略 SSH URI 格式。你执行 subl user@server:/var/www/index.php,它要么报 Unable to parse path,要么静默失败、只打开空白窗口。
- 这不是插件没装好,是 Sublime 内核根本不处理主机名前缀
- 所有“远程编辑”方案都必须绕过这个限制:要么把文件拉到本地(SFTP),要么让远程命令触发本地 Sublime 打开(rsub)
- 别在命令行里硬试 SSH 路径,浪费时间
rsub 反向隧道必须配对启动且权限对齐
rsub 的工作链是:远程终端执行 rsub file.py → 通过 SSH 反向隧道 → 本地 Sublime 接收并打开。任意一环断掉,就卡在“无响应”或“Connection refused”。
- 远程必须先运行
ssh -R 52698:localhost:52698 user@localhost(注意是连自己,不是连你本地机器);更稳妥的是用ssh -R 52698:localhost:52698 -Nf user@your_local_ip - 本地 Sublime 必须已安装
rsub插件,且确认状态栏右下角显示rsub: ready - 远程执行
rsub时,当前工作目录要有目标文件读权限;若编辑/var/log/nginx/access.log,得用sudo rsub /var/log/nginx/access.log,否则内容为空 -
ssh_key_file要写绝对路径,比如~/.ssh/id_rsa不生效,得写成/home/user/.ssh/id_rsa
SFTP 插件的 remote_path 不支持波浪号 ~
你在 sftp-config.json 里写 "remote_path": "~/project",SFTP 插件不会做 shell 展开,直接当字面量拼进路径,最终尝试访问服务器上的 /home/user/~/project,必然报错或列出空目录。
- 必须写绝对路径,例如
"/home/deploy/project"或"/var/www/html" - 如果不确定用户主目录在哪,登录服务器后执行
pwd或echo $HOME确认 - 改完
sftp-config.json后一定要重启 Sublime Text,插件不会热重载配置 -
sync_down_on_open设为true很危险:双击远程文件时自动覆盖本地副本,协作中极易丢代码;建议只在单人维护静态资源时开启
防火墙和 sshd_config 容易被忽略的两个硬性开关
即使密钥、路径、端口全对,rsub 和 SFTP 仍可能静默失败,问题往往出在服务端 SSH 配置。
-
/etc/ssh/sshd_config中必须有AllowTcpForwarding yes(rsub依赖)和Subsystem sftp internal-sftp(SFTP 插件依赖);注释掉或删了就直接报Unexpected server response - 云服务器(如腾讯云、阿里云)默认安全组会拦截非 22 端口,
rsub用的 52698 端口、SFTP 用的 22 端口都得在控制台放行 - 内网环境若用
ssh -R失败,检查是否启用了GatewayPorts clientspecified(需管理员改配置并 reload sshd)
真正卡住人的从来不是步骤多,而是某处路径少了个斜杠、某个配置项拼写错了字母、或者改完配置忘了重启 Sublime——这些细节不报明确错误,只让你对着空白窗口干瞪眼。











