Skip to content

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 的机器。

操作步骤 ​

  1. 打开客户端左侧 SSH 远程开发。

  2. 本机 ~/.ssh/config 里已有的主机,会出现在发现列表里,可以一键带入。

  3. 填写或核对:

    • 名称:随便起,方便辨认,例如 home_fn。
    • 主机 / 端口 / 用户名。
    • 认证:私钥(推荐)或密码。
    • 远端代理端口:默认 2545。一般不用改,新版本在端口被占用时会自动换下一个。
  4. 先点 保存配置,再点该行的 连接,或顶部的 连接并配置 Qoder。

  5. 状态变成已连接后,看右侧实际端口。远端 Qoder 应使用:

    http://127.0.0.1:<实际端口>

    客户端会改远端 ~/.qoder-server/data/Machine/settings.json 里的 http.proxy,并先备份原值。

  6. 远端如果已经开着 Qoder,改完配置后重启一次远端 Qoder,让它重新读代理。

  7. 用完点 断开。客户端会尽量把远端代理设置恢复成连接前的样子。

关窗口不会断隧道

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 2545

sshd 没开转发 ​

所有候选端口都失败时,在远端检查 /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 no

GatewayPorts no 即可,不必为了这个功能改成 yes。

QQ群:1103944757