查看端口是否占用

linux: lsof -i :7996

windows cmd: netstat -ano | findstr 7996

本地服务器设置

  1. 启动本地代理

ssh 创建本地 SOCKS5 代理, -D 表示开启 SOCKS5 代理端口, -N 表示不执行远程命令, 仅建立隧道. 这个端口供远程服务器访问使用

1
ssh -D 7996 user@localhost -N
  1. 建立 SSH 反向端口转发

把远程服务器上的 127.0.0.1:7996 映射到本地 7996 端口. 前提需要远程 ssh 配置允许端口转发 (AllowTcpForwarding Yes)

1
ssh -R 7996:127.0.0.1:7996 user@remote-server
  1. 确认代理可用
1
curl -x socks5h://127.0.0.1:7996 https://api.ipify.org

能返回本地公网 ip 说明代理可用

远程服务器设置

  1. 设置 vscode 插件代理

vscode 支持整体插件的网络请求代理, 在 setting.json 中设置如下

1
2
"http.proxy": "http://127.0.0.1:1080",
"http.proxyStrictSSL": false

也有一些插件自己支持网络请求代理, 比如 git.proxy

  1. 配置远程环境变量 (可选)

如果通过环境变量读取代理, 可以设置 .bashrc 或 remoteEnv

1
2
3
4
"remoteEnv": {
"http_proxy": "http://127.0.0.1:1080",
"https_proxy": "http://127.0.0.1:1080"
}
  1. 验证插件是否走本地网络
1
curl -x http://127.0.0.1:1080 https://api.ipify.org

输出为本地公网 ip 说明连接成功

一键运行脚本

1
2
3
4
5
6
7
8
9
10
11
12
# 配置
$LocalSocksPort = 7796
$RemoteUser = "remote_user"
$RemoteHost = "remote_server_ip"

# 启动本地 SOCKS5 代理
Start-Process ssh -ArgumentList "-N -D $LocalSocksPort user@localhost" -NoNewWindow

# 建立远程反向端口转发
Start-Process ssh -ArgumentList "-N -R $LocalSocksPort:127.0.0.1:$LocalSocksPort $RemoteUser@$RemoteHost" -NoNewWindow

Write-Host "本地 SOCKS5 代理启动,远程端口转发已建立"