万能连接
2025-01-03
把本地服务暴露到公网服务器
比如在调试微信接口的时候,需要通过白名单 IP 访问。
- 在本地启动服务,比如
python -m http.server 8001
- 用 ssh 打一个 tunnel,
ssh -R 0.0.0.0:8001:localhost:8001 root@your-server-ip
- 登录服务器以后,用 socat 转发端口,
socat -d -d TCP-LISTEN:80,fork,reuseaddr TCP:localhost:8001
访问远端服务器中的内网应用
比如远端服务器 6379 端口运行着内网可见的 Redis:
ssh -L 0.0.0.0:6379:0.0.0.0:6379 root@47.92.245.237
此时直接访问本地 6379 端口即可访问远端服务器的 Redis。
把远端服务器作为代理出口
比如本地需要临时连接微信 API 调试,但是请求必须来自已指定的 IP 白名单。
ssh -D [local_port] [user]@[server_ip] -p [port]
-D [local_port]
: 指定 SOCKS 端口,比如 1080[user]
: SSH 用户名[server_ip]
: SSH 服务器 IP-p [port]
: SSH 服务器端口,默认 22
举例:
ssh -D 1080 root@47.100.36.133 -p 22 -N -f
-N
: 不执行远程命令-f
: 后台运行 ⚠️ 注意!慎用这个命令,因为后台运行的进程不容易被发现和关闭,如果不小心忘记关闭线上代理,可能会导致非常严重的安全问题。
然后就可以通过 SOCKS 代理访问外网了:
curl --socks5 localhost:1080 http://ipinfo.io/json
输出:
{
"ip": "xxx.xxx.xxx.xxx",
"city": "Shanghai",
"region": "Shanghai",
"country": "CN",
"loc": "xxxxxx",
"org": "AS37963 Hangzhou Alibaba Advertising Co.,Ltd.",
"postal": "200000",
"timezone": "Asia/Shanghai",
"readme": "https://ipinfo.io/missingauth"
}
这个时候只需要在代码中加上 socks5 配置,或者在本地的 VPN 中设置全局代理即可,下面是具体操作步骤。
ClashX + SSH 配置简易 VPN
比如:
- 微信
api.weixin.qq.com
需要通过白名单服务器 A 访问 - 阿里云
rds.aliyuncs.com
需要通过白名单服务器 B 访问 - IP 服务
ipinfo.io
需要通过白名单服务器 C 访问
我的目标是能够在本地机器上直接访问:
curl https://api.weixin.qq.com/
此时可以 ClashX Pro 配置路由规则,再通过 SSH 代理到白名单服务器即可。
配置 ClashX 路由规则

以 ipinfo.io
为例:
proxies:
- name: "C_Socks5"
type: socks5
server: 127.0.0.1
port: 1080
udp: true
proxy-groups:
- name: 国外流量
type: select
proxies:
- ehd-vmess
- k8s-cjh
- name: 国内流量
type: select
proxies:
- DIRECT
- name: C
type: select
proxies:
- C_Socks5
rules:
- DOMAIN-SUFFIX,smtp,DIRECT
- DOMAIN-KEYWORD,aria2,DIRECT
- DOMAIN-SUFFIX,uniin.cn,国外流量
# 自定义路由规则
- DOMAIN-SUFFIX,ipinfo.io,C
SSH 代理到白名单服务器
ssh -D 1080 root@xxx.xxx.xxx.xxx -p 22 -N -f
测试
此时使用浏览器访问 ipinfo.io,可见其反馈的请求 IP 已变为公网 IP:
