方案 A:服务器能直接访问你的主机
比如你的主机 IP 是:
192.168.1.10
主机上的代理端口是:
7890
那么服务器上直接设置:
export http_proxy=http://192.168.1.10:7890
export https_proxy=http://192.168.1.10:7890
如果是 SOCKS5:
export all_proxy=socks5h://192.168.1.10:7891
测试:
curl https://example.com
这个方案的关键点
主机上的代理不能只监听 127.0.0.1,必须监听:
0.0.0.0
或者监听主机的局域网 IP。否则服务器访问不到。
方案 B:服务器访问不到你的主机,就用 SSH 反向隧道
让服务器把要访问外网的请求发给你的主机,由你的主机通过 VPN 代发。
假设:
- 你的主机本地已经有代理:
127.0.0.1:7890 - 服务器能被你的主机 SSH 登录
那你在主机上执行:
ssh -N -R 7890:127.0.0.1:7890 user@server
这句话的意思是:
把服务器上的 7890 端口,反向转发到你主机本地的 7890
于是服务器上就可以直接这样用:
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
如果你本机 VPN 软件提供的是 SOCKS5 代理,比如 127.0.0.1:7891,那就在主机上执行:
ssh -N -R 7891:127.0.0.1:7891 user@server
服务器上设置:
export all_proxy=socks5h://127.0.0.1:7891