1. 场景描述
先说一下笔者遇到的情况:
- 本地 Windows 电脑 已经配置好代理或者加速工具,能正常访问外网的Git仓库;
- 通过复杂的代理链路,成功 SSH 登录了一台 远程 Linux 服务器(IP 如 10.250.4.84:2347);
- 但当在服务器上执行 git pull 时,却卡住或超时——因为服务器本身无法直连外网;
- 希望:让服务器“借用”本地的代理网络。
这正是本文要解决的问题。
2. 核心思路
因为是通过代理来连接的服务器,所以想当然的认为服务器也可以访问本地机器。实际上本地机器处于 NAT 或防火墙之后,服务器无法主动连接本地机器(比如它 ping 不通本机地址 192.168.2.225)。因此解决方案就是:本地机器主动发起的 SSH 连接,建立一个“反向通道”。具体示意图如下:- 服务器 (10.250.4.84)
- ←─[SSH 隧道]─→
- 本地电脑 (192.168.2.225:7890)
- → 代理 → 外网 (Git仓库)
复制代码 具体做法就是建立一个 SSH 反向隧道(Reverse Tunnel),在服务器上监听一个端口(如 1080),所有流量经由 SSH 隧道转发到你本地的代理端口。
3. 实操步骤
第一步:确认本地代理(例如http://192.168.2.225:7890)支持局域网访问。不同的代理客户端有不同的设置方法,另外最好临时关闭 Windows 防火墙,排除拦截问题。
第二步:用 PowerShell 建立反向隧道。在 PowerShell 中执行:- ssh -p 2347 -R 1080:192.168.2.225:7890 charlee@10.250.4.84
复制代码 参数说明:
- -p 2347:指定服务器的 SSH 端口(标准端口是22)。
- -R 1080:192.168.2.225:7890:在服务器的 127.0.0.1:1080 建立监听,转发到你本地的代理;
- 登录后,你会进入交互式 shell,可以像 MobaXterm 一样操作服务器。
<blockquote>
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |