在服务器上通过本地代理访问外网的配置方法(SSH & HTTP 两种方式)
在某些场景下,我们希望远程服务器访问外网时,能够走本地的代理(如 V2Ray 或其他 SOCKS5 代理),以突破防火墙或加速访问。本文总结了两种常用方式:SSH 端口转发 和 HTTP/HTTPS 代理。
一、SSH 方式(远程端口转发)
目的
让服务器上的任意 TCP 流量(如 ssh git@github.com)通过本地代理访问外网。
配置步骤
方法一:命令行临时转发
-R 10810:127.0.0.1:10810:远程服务器监听端口10810,所有流量转发到本地代理127.0.0.1:10810。-f -N:在后台运行,不打开 shell。- 关闭终端或杀掉进程后,隧道会断开。
- 适合临时使用,无需修改配置文件。
方法二:配置文件自动转发
在本地 ~/.ssh/config 添加:
- 每次
ssh remote-server都会自动创建远程端口转发。 - 注意:隧道依然依赖本地代理运行,关闭终端隧道会断开。
- 如果需要自动重连,可以使用
autossh配合RemoteForward。
二、HTTP/HTTPS 方式(环境变量代理)
目的
让服务器上的 HTTP/HTTPS 请求(如 Git HTTPS 推送、curl、wget)走本地代理。
配置步骤
-
本地 SOCKS5 或 HTTP 代理
-
V2RayN 默认提供 SOCKS5,例如:
-
如果想直接走 HTTP,需要本地有 HTTP 端口。
-
服务器设置环境变量
-
临时启用即可,或者写入
~/.bashrc。 -
Git HTTPS 推送
-
修改仓库远程地址为 HTTPS:
-
Git 会通过
http_proxy/https_proxy访问 GitHub。 -
注意事项
-
HTTP 方式不需要 SSH 端口转发。
- 只能代理 HTTP/HTTPS,其他 TCP 服务需 SSH 隧道或
proxychains。
三、SSH 与 HTTP 代理对比
| 方式 | 使用场景 | 配置复杂度 | 需服务器配置 | 优缺点 |
|---|---|---|---|---|
| SSH | Git SSH 推送、任意 TCP | 高 | 允许远程端口转发 | 优点:全 TCP 可代理;缺点:需 SSH 转发,每次需启动隧道 |
| HTTP/HTTPS | Git HTTPS、curl、wget | 低 | 无需 | 优点:易用,无需端口转发;缺点:只能代理 HTTP/HTTPS,非 TCP 应用需额外工具 |
四、实践建议
- 临时使用:HTTP/HTTPS 方式最简单,Git HTTPS 推送即可。
- 需要全 TCP 流量代理:SSH 远程端口转发 + ProxyCommand 配合使用。
- 自动化:可写脚本启动 SSH 隧道,每次需要时运行即可,关闭终端后隧道自动断开。
💡 示例 SSH 隧道启动脚本(可写在本地)
#!/bin/bash
ssh -f -N -R 10810:127.0.0.1:10810 user@remote-server
echo "SSH 隧道已启动,端口 10810 已转发到本地代理"