外观
SSH 远程开发
把本机已经跑起来的 Qoder Client 代理,通过 SSH 反向隧道接到另一台 Linux 开发机上。远端 Qoder / Qoder Server 访问 http://127.0.0.1:2545(或客户端自动换到的端口),流量回到你电脑上的换号代理。
使用前确认
- 本机客户端已登录,右上角是「服务在线」,本地代理已监听(默认
127.0.0.1:2545)。 - 远端是 Linux 开发机,你能先用终端
ssh user@主机登录。 - 优先用 私钥。密码登录可以,但密码不会长期保存在本地;重启客户端后再自动恢复时,没密码就会停住。
- 不要把
github.com、跳板、路由器管理页加成「开发机」。列表里只放真正要跑 Qoder 的机器。
操作步骤
打开客户端左侧 SSH 远程开发。
本机
~/.ssh/config里已有的主机,会出现在发现列表里,可以一键带入。填写或核对:
- 名称:随便起,方便辨认,例如
home_fn。 - 主机 / 端口 / 用户名。
- 认证:私钥(推荐)或密码。
- 远端代理端口:默认
2545。一般不用改,新版本在端口被占用时会自动换下一个。
- 名称:随便起,方便辨认,例如
先点 保存配置,再点该行的 连接,或顶部的 连接并配置 Qoder。
状态变成已连接后,看右侧实际端口。远端 Qoder 应使用:
http://127.0.0.1:<实际端口>客户端会改远端
~/.qoder-server/data/Machine/settings.json里的http.proxy,并先备份原值。远端如果已经开着 Qoder,改完配置后重启一次远端 Qoder,让它重新读代理。
用完点 断开。客户端会尽量把远端代理设置恢复成连接前的样子。
关窗口不会断隧道
Windows 上点关闭只会隐藏到托盘,SSH 隧道还在。要从托盘图标选「退出」才会停代理、拆隧道。
推荐用法
- 一台开发机只建 一条 隧道。两台电脑同时往同一台机器反代
2545,后连的会被拒(新版本会改试2546等)。 - 密钥放在本机
~/.ssh/,需要时用 ssh-agent;加密私钥且没有 agent 时,连接会失败。 - 内网 / EasyTier 地址先在终端里
ssh通,再在客户端里连。客户端报的「转发被拒」和「根本 ping 不通」不是一回事。 - 远端端口保持默认
2545,让客户端自动避让被占端口。只有 sshd 禁止转发时,换端口也没用。
常见坑
远端端口 2545 被占 / tcpip-forward request denied by peer
界面类似:
远端端口 2545 建立失败;请先取消其他隧道,或改用不同的远端代理端口
ssh: tcpip-forward request denied by peer
这是远端 sshd 拒绝了反向转发,不是账号密码错。
常见两种原因:
| 原因 | 怎么判断 | 怎么办 |
|---|---|---|
2545 已经被另一条隧道或进程占用 | 换端口立刻成功,或新版本自动连上并显示 2546 | 取消旧隧道;或让新版本自动换端口 |
| sshd 不允许 TCP 转发 | 2545~2560 全部失败,提示「远端拒绝 TCP 转发」 | 在远端打开转发,见下一节 |
新版本会在同一条 SSH 连接上依次尝试你配置的端口及随后最多 15 个端口。成功后状态栏显示实际端口,保存的配置仍是你填的那个首选端口。
若仍看到「重连中 · 第 N 次」且错误一直是 denied by peer:先点 取消重连,再更新客户端。旧版本会把「端口被拒」当成暂时故障,对着同一个端口死磕。
在远端自查占用(把 2545 换成实际端口):
bash
ss -lntp | grep 2545sshd 没开转发
所有候选端口都失败时,在远端检查 /etc/ssh/sshd_config(或发行版的 sshd_config.d):
text
AllowTcpForwarding yes改完后重载 sshd,例如:
bash
sudo systemctl reload sshd部分 NAS / FnOS 默认不允许远程转发。只开 AllowTcpForwarding local 不够,反向隧道需要完整的 yes。
本机代理还没起来
隧道建得再好,远端也连不到换号服务。先看客户端右上角是否「服务在线」,本机 127.0.0.1:2545 是否在听。先启动本机 Qoder / 点启动,再连 SSH。
密码登录无法自动恢复
密码不会长期写进磁盘。客户端重启后若开启了自动恢复,会提示需要重新输入密码。私钥登录才能在重启后静默恢复。
主机密钥未信任或不一致
第一次连新主机要确认指纹。密钥和本地记录对不上时,不会在后台自动重试,避免误连到被掉包的机器。确认是你重装过系统后,再按客户端提示处理。
连上了,远端 Qoder 还是没走代理
客户端改的是:
~/.qoder-server/data/Machine/settings.json
写的是 http.proxy 和 http.useLocalProxyConfiguration。如果远端跑的不是这套 Qoder Server 数据目录,或进程在改文件前就启动了,需要重启远端 Qoder。
断开后客户端会按备份文件把这两项改回去。若断开时网络已经断了,备份可能没写回,远端会继续指着已经不存在的 127.0.0.1:2545。这时到远端删掉错误的 http.proxy,或把备份文件 settings.qoder-client-proxy-backup.json 里的原值拷回去。
把 GitHub 加成了开发机
[email protected]:22 不能当远程开发机。GitHub 不会接受你的反向代理,也不该出现在这个列表里。删掉即可。
内网 IP 连不上
192.168.x.x 或 EasyTier 10.10.20.x 不通时,先在系统终端 ssh user@主机 试。客户端报「SSH TCP 连接失败」是网络/防火墙问题,先把 SSH 本身打通。
WSL
Windows 上如果走 WSL 网络,页面会显示 WSL 状态。镜像模式和 NAT 模式表现不同;WSL 里的 Qoder 要访问的是 Windows 宿主机 上的客户端代理,不是 WSL 自己的 127.0.0.1。SSH 远程开发针对的是另一台 Linux 机器,不要和「本机 WSL 里跑 Qoder」混成同一种场景。
远端 sshd 最小配置
只要反向隧道,不需要把 2545 暴露到公网。客户端绑定的是远端 127.0.0.1,不是 0.0.0.0。
text
AllowTcpForwarding yes
GatewayPorts noGatewayPorts no 即可,不必为了这个功能改成 yes。