rsub需ssh端口转发才能工作,因其默认仅监听127.0.0.1:52698;须在远程安装rsub(gem install rsub)、启动服务、用ssh -r 52698:localhost:52698连接,并确保sublime能调用rsub命令。

Sublime Text 本身不支持直接 SSH 编辑远程 Linux 文件,rsub 是一个必须手动部署的桥接方案——它不是开箱即用的功能,而是依赖你在远程服务器上运行一个监听本地端口的 Ruby 守护进程(rsub),再通过 SSH 端口转发把 Sublime 的连接请求“偷运”过去。
为什么 rsub 需要 SSH 端口转发而不是直连?
因为 Sublime 运行在本地,而 rsub 服务默认只监听 127.0.0.1:52698(回环地址),不对外网开放。SSH 端口转发是唯一安全、无需改防火墙/SELinux 的方式,把远程的 127.0.0.1:52698 映射到本地的同端口。
- 不配端口转发 → Sublime 连不上,报错
Connection refused或卡在 “Connecting…” - 用
-R(远程端口转发)会失败:rsub只响应本地连接,不接受来自远程主机的反向连接 - 正确命令是:
ssh -R 52698:localhost:52698 user@server(注意是-R,但语义是“把远程的 52698 转发到我本地的 52698”,实际效果等价于本地监听) - 如果服务器禁用了
GatewayPorts,加-o GatewayPorts=yes无效;必须改/etc/ssh/sshd_config并重启sshd
如何在远程 Linux 上安装并启动 rsub?
rsub 是一个 Ruby 脚本,依赖 ruby 和 net-ssh gem。CentOS/RHEL 默认没装 Ruby,Ubuntu 可能有但版本旧——别用系统包管理器装 rsub,容易权限或路径混乱。
- 先确认 Ruby 版本 ≥ 2.3:
ruby --version,否则用rbenv或chruby切换 - 运行:
gem install rsub(不用sudo,避免写入系统目录;若失败,加--user-install) - 确保
~/.gem/ruby/*/bin在$PATH中(检查which rsub是否有输出) - 启动:
rsub(无参数,默认监听127.0.0.1:52698);加-v可看日志,确认是否收到连接 - 别用
systemd或nohup后台启:它必须和 SSH 会话绑定,否则端口转发断开后服务就死
Sublime Text 本地怎么配置才能识别 rsub?
Mac 和 Linux 用户只要装了 rsub 命令行工具(curl -sL https://raw.githubusercontent.com/aurora/rsub/master/rsub | sudo bash),Sublime 就能调用;Windows 用户必须用 WSL2 + X11 转发或彻底放弃 rsub 改用 SFTP 插件。
- Mac 上验证:
which rsub必须返回路径,否则 Sublime 找不到命令 - Sublime 中按
Cmd+Shift+P(Mac)或Ctrl+Shift+P(Linux),输入Remote Edit: Edit File,再输远程路径如/home/user/app.rb - 如果提示
Command not found: rsub,说明 Sublime 启动时没读到你的 shell$PATH(尤其用 zsh / fish 的用户):改用终端启动 Sublime,例如subl而非桌面图标 - 路径必须绝对,不能用
~/或环境变量;rsub不做 shell 展开
常见错误现象与对应排查点
连不上、打不开、保存失败——90% 是这四个环节之一断了链:Ruby 环境 → rsub 进程 → SSH 端口转发 → Sublime 调用路径。
-
Connection refused:远程rsub没跑,或 SSH 连接未带-R 52698:localhost:52698 -
Permission denied (publickey):SSH 密钥没加载,用ssh-add -l检查;别在 tmux/screen 里漏掉 agent 转发 - 文件打开但无法保存,提示
Permission denied:远程用户对目标文件无写权限,rsub以当前 SSH 用户身份操作,不提权 - Sublime 显示空白或乱码:远程文件编码不是 UTF-8,Sublime 默认按 UTF-8 解码;可在
View → Encoding → Reopen with Encoding手动切
最易被忽略的是:SSH 连接必须保持活跃,rsub 进程随 SSH 断开而退出;别以为后台挂着就万事大吉——它不是 daemon。











