狂客原创 转载请注明 侵权必究
为了让服务器访问外网,你需要确保你的本地电脑有一个可以代理网络请求的服务。例如,你可以使用 ssh -D
在本地电脑上先启动一个 SOCKS 代理,然后再用 -R
将这个代理端口转发给服务器。
步骤一:在本地电脑上启动 SOCKS 代理
Bash
# 在本地终端执行,这会创建一个监听在 9090 端口的 SOCKS 代理
ssh -D 9090 localhost -p 22
这个命令会启动一个 SOCKS 代理,将你本地的流量转发到本地,看似没有意义,但它的作用是提供一个 SOCKS 代理服务。
步骤二:将本地代理端口转发给服务器
保持上面的命令运行,另开一个本地终端,执行远程端口转发:
Bash
# 将本地的 9090 SOCKS 代理端口转发到服务器的 7070 端口
ssh -R 7070:localhost:9090 user@server_ip
步骤三:在远程服务器上配置代理
现在,远程服务器就可以通过 localhost:7070
这个 SOCKS 代理来访问外网了。你可以使用 curl
或其他工具来测试:
Bash
# 在远程服务器终端执行
curl --socks5-hostname localhost:7070 http://icanhazip.com
如果你看到返回的 IP 地址是你本地电脑的公网 IP,那么恭喜你,转发成功了。
2. 命令行设置
你可以通过设置环境变量来让一些命令行工具(如 curl
, wget
等)走代理。
Bash
# SOCKS5 代理
export ALL_PROXY="socks5://localhost:7070"# 如果你只想让 HTTP 请求走代理,可以设置 一般ALL_PROXY这个就够用了
export http_proxy="http://localhost:7070"
export https_proxy="http://localhost:7070"
提示: 这种设置通常只在当前终端会话中有效。为了让它永久生效,你可以将这些命令添加到你的 shell 配置文件中,例如 ~/.bashrc
或 ~/.zshrc
。