有时候人在国外,但需要访问一些仅允许中国大陆 IP 访问的网站。最直接的办法是在国内服务器上搭建代理服务,例如 SOCKS5、WireGuard 或 OpenVPN。不过对于临时使用或者个人用途,其实有一个更简单的方法:利用 SSH 自带的动态端口转发功能(Dynamic Port Forwarding)创建一个本地 SOCKS5 代理。

这个方案不需要安装额外软件,不需要 Docker,也不需要在服务器上开放新的端口。如果服务器已经可以通过 SSH 登录,那么几乎可以立即使用。

声明

本文仅用于介绍 SSH 动态端口转发的技术原理及合法用途。请仅在拥有服务器控制权或获得授权的情况下使用本文方法,并遵守当地法律法规及相关服务条款。因不当使用本文内容造成的任何后果,由使用者自行承担。

原理

假设你有一台位于国内的服务器:

你的电脑(海外)
        │
        ▼
   SSH 加密隧道
        │
        ▼
   国内服务器
        │
        ▼
     目标网站

浏览器的流量先发送到本地 SOCKS5 代理,然后通过 SSH 隧道转发到国内服务器,再由国内服务器访问目标网站。

因此,目标网站看到的来源 IP 将是国内服务器的公网 IP,而不是你当前所在国家或地区的 IP。

创建本地 SOCKS5 代理

在本地终端执行:

ssh -D 1080 username@your_server_ip

例如:

ssh -D 1080 [email protected]

参数说明:

连接成功后,不要关闭终端窗口。

此时本地已经有一个 SOCKS5 代理: