2025-12-08    2025-12-08    650 字  2 分钟

The note is generated by “chatGPT”.

当希望 A 服务器借用 B 服务器的代理网络(例如 Clash/Mihomo 的 7890 端口)时,可以使用 SSH 的端口转发(ssh -L)来实现。
最终效果是:

A 访问 127.0.0.1:本地端口  → 通过 SSH 转发到 B:7890 → B 的 Clash 提供代理功能

1️⃣ 前提条件

  • A 可以 SSH 登录 B

  • B 上运行着 Clash/Mihomo,并且 HTTP 代理端口(如 7890)可用

  • A 需要访问 Google 等外网


2️⃣ SSH 端口转发核心命令

下面是 A 服务器运行的命令

1
2
3
ssh -4 -L 7890:127.0.0.1:7890 user@B_IP
# 或后台运行(不用占用窗口)
ssh -4 -f -N -L 7890:127.0.0.1:7890 user@B_IP

含义:

参数含义
-4强制 SSH 使用 IPv4(否则可能监听到 ::1 导致代理失败)
-f后台运行
-N不执行远程命令,只做端口转发
-L创建本地端口转发
7890:127.0.0.1:7890A 本地 7890 → B 本地 7890
user@B_IPSSH 登录 B 的实际地址

执行后保持窗口 不要关闭,转发才能持续有效。


3️⃣ 验证端口是否成功监听

在 A 服务器检查监听端口:

1
ss -tulnp | grep 7890

正确结果应包含:

127.0.0.1:7890  LISTEN

如果显示的是:

[::1]:7890

就表示 SSH 监听在 IPv6,需要加上 -4


4️⃣ 测试代理是否正常工作

在 A 另开一个窗口执行:

1
curl -x http://127.0.0.1:7890 https://www.google.com/generate_204

出现 空输出(HTTP 204 No Content) 就表示成功通过 B 访问了 Google。

如果失败:

  • 可能 B 的 Clash 没启动

  • 可能端口没转发成功(检查 ss -tulnp)

  • 可能 A 的 curl 仍在直连(测试 curl -x)


5️⃣ 后台运行(不用占用窗口)

1
ssh -4 -f -N -L 7890:127.0.0.1:7890 user@B_IP

说明:

  • -f 后台运行

  • -N 不执行远程命令,只做端口转发

再验证:

1
curl -x http://127.0.0.1:7890 https://www.google.com/generate_204

6️⃣ 让 A 的所有程序都自动走代理(可选)

1
2
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890

测试:

1
curl https://www.google.com/generate_204

🎉 最终效果

A 服务器的流量:

A(127.0.0.1:7890) → SSH → B(127.0.0.1:7890 → Clash → 外网)

A 就可以完全使用 B 的代理能力,包括访问 Google、pip、git、Python 请求等。