ranger中rsub卡住或connection refused的根本原因是通信链路未正确建立:远程rsub未监听、ssh反向转发配置错误(需-r 52698:localhost:52698)、sublime未启用rsub插件或防火墙拦截,且路径必须为绝对unix风格,编辑后需手动同步。

为什么Ranger里用rsub打开文件,Sublime总卡住或报Connection refused
根本不是Ranger或SSH配置错,而是rsub启动后没监听成功,或者本地Sublime压根没连上那个端口。Ranger只是调用rsub发请求,真正通信链路是:Ranger → 远程rsub → SSH反向端口转发 → 本地127.0.0.1:52698 → Sublime的RSub插件。
-
rsub必须在远程shell里显式运行(比如rsub index.html),不能只靠Ranger快捷键触发就默认后台常驻——它每次都是临时进程 - Windows上Sublime默认不监听
127.0.0.1:52698,得确认RSub插件已启用,且控制台输出RSub: listening on 127.0.0.1:52698 - SSH连接必须带
-R 52698:localhost:52698参数,不能只写-R 52698——后者绑定的是0.0.0.0,Windows防火墙常拦截 - 如果用了WSL2,
localhost在WSL里指向Windows主机,但Ranger跑在纯Linux终端时,localhost指自己,此时-R要改成-R 52698:host.docker.internal:52698(仅限Docker场景)
rsub连接频繁中断,但SSH本身还活着
这是典型的TCP连接空闲被中间设备(路由器、公司防火墙、云厂商SLB)静默回收,而rsub和RSub插件都没心跳机制。SSH连接维持着,但rsub监听的端口连接已断,新请求进来就直接Connection refused。
- 在Windows端SSH客户端配置里(比如PuTTY或OpenSSH的
%USERPROFILE%\ssh\config),必须加:ServerAliveInterval 30和ServerAliveCountMax 3——注意不是ClientAlive,那是服务端配置 - Ranger的
rifle配置里调用rsub时,建议包一层重试逻辑,例如:shell -ic 'for i in {1..3}; do rsub %f && break || sleep 1; done' - 不要依赖
rsub --forever(Ruby版不支持),Python版pyrsub可用--daemon,但Windows服务管理麻烦,不如每次Ranger触发时重新拉起 - 检查Windows Defender防火墙是否放行了出站到
127.0.0.1:52698的连接——很多用户开了“专用网络”规则却漏掉“域网络”
Ranger按Enter打开远程文件,Sublime闪一下就消失
现象是Sublime窗口弹出来又立刻关闭,控制台可能打印error: no such file或静默退出。这不是丢包,是路径解析失败:Ranger传给rsub的是相对路径(比如./src/main.py),rsub把它当成本地路径发给Sublime,而Sublime只认绝对路径。
- 确保Ranger当前工作目录就是远程项目根目录,且
rsub调用前先cd进去——可在~/.config/ranger/plugins/下写个wrapper脚本,开头加cd "$(pwd)" - 改用
rsub -d /full/path/to/file强制传绝对路径,Ranger的rifle.conf里把rsub %f换成rsub -d "$(realpath %f)" - Windows上Sublime对路径分隔符敏感:
/home/user/project/file.py能打开,\home\user\project\file.py会失败——Ranger输出的路径必须保持Unix风格 - 如果远程是WSL,Ranger跑在bash里,
%f自带/mnt/c/...前缀,需用wslpath -u "%f"转成Linux路径再传给rsub
Sublime打开文件后编辑无响应,保存也不上传
这和SFTP插件无关,rsub模式下Sublime只是本地编辑器,所有文件操作都在本地缓存,不会自动同步。所谓“远程编辑”只是打开→编辑→手动触发上传(或靠外部工具同步),不是实时双写。
- 别指望
upload_on_save在这种模式下生效——它只对SFTP项目有效,rsub根本不读sftp-config.json - 编辑完必须回到Ranger里按
gh(git diff)或手动rsync -av ./ user@host:/path同步,或者配一个autocmd在Sublime里监听保存事件调用scp - 如果真要自动同步,得换方案:用
sshfs把远程目录挂载到Windows本地(如Z:\),再用Sublime直接打开Z:\project\file.py——这时所有保存都是实时写入远程 - 挂载方式要注意:
sshfs -o allow_other,uid=1000,gid=1000 user@host:/remote/path Z:,否则Windows权限报错,且allow_other必须配合Windows服务WinFsp启用
-R精确绑定、Sublime监听端口开着、Windows防火墙放行、编辑后手动同步。想全自动就别用rsub,直接上sshfs挂载——否则永远在重连和路径纠错里打转。











