解决 VSCode 连接服务器代理失效问题(Codex 插件可用)

解决 vscode 连接服务器无法正常使用代理(codex插件)

起因:在服务器配置了代理,但是无法正常使用codex,一致显示连接超时

本地终端配置

在本地终端中输入

1
ssh -R 9999:localhost:7890 用户名@主机IP

输入密码后实现与服务器的连接

服务器端配置

vscode 连接服务器后,在 /home/username/.bashrc 最后添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
cat >> ~/.bashrc <<'EOF'

vpn() {
export http_proxy=http://192.168.1.23:9999
export https_proxy=http://192.168.1.23:9999
echo "Proxy has been set to 192.168.1.23:9999"
}

unvpn() {
unset http_proxy https_proxy
echo "Proxy has been disabled"
}
EOF

同时在本地 Clash 中打开 允许局域网连接 Clash

使用时完整配置

  1. 在本地终端中输入ssh -R 9999:localhost:7890 用户名@主机IP
  2. 打开服务器终端,输入vpn
  3. 在服务器终端中输入如果在终端中出现一长串信息,说明代理成功!

如果想关闭VPN可输入unvpn命令

VSCode 代理配置

通过上述操作,已经可以实现在服务器终端中连通 Github ,但在使用一些插件,如:Codex 时会显示网络连接问题。

其问题的关键是: VS Code 的远端 “Server/Extension Host” 是由 Remote-SSH 的另一条 ssh 连接拉起的独立进程,不会继承你在终端里 vpn 导出的环境变量,也未必复用你那条 ssh -R 隧道。

因此需要同时解决两件事:①让 VS Code 自己那条 SSH 连接也带上反向隧道;②让 VS Code 远端服务进程和扩展明确走代理!

Step 1: 把反向隧道写进 VS Code 用的 SSH 配置

在 Windows 上编辑 C:\Users\<你的用户名>\.ssh\config(没有就新建),加入:

1
2
3
4
5
6
Host AAAA(主机名,可以自由设置)
HostName 服务器IP
User 用户名
RemoteForward 9999 127.0.0.1:7890
ServerAliveInterval 60
ServerAliveCountMax 3

注意:将127.0.0.1:7890替换为自己的代理服务器地址。

之后在 VS Code 的「Remote-SSH: Connect to Host…」里选择 AAAA 连接。 (这样 VS Code 自己那条 SSH 连接也会提供 localhost:9999 的反向 HTTP 代理端口。)

Step 2: 为Git本身配置代理

在服务器终端中输入curl https://github.com

1
2
git config --global http.proxy  http://127.0.0.1:9999
git config --global https.proxy http://127.0.0.1:9999

完成后在 VS Code 命令面板执行 Remote-SSH: Kill VS Code Server on Host… 并重连服务器

Step 3: 在「远端设置」里启用 VS Code 的代理支持

连接到远端后,打开 设置(齿轮→Settings),左上角会显示 “Remote [SSH: AAAA]”。在这里设置(或直接编辑 ~/.vscode-server/data/Machine/settings.json):

Step 4: 重启 VS Code 远端服务,让新环境生效

命令面板(Ctrl/Cmd+Shift+P)执行:Remote-SSH: Kill VS Code Server on Host…,选择你的主机;然后重新连接一次。

参考连接: https://zhuanlan.zhihu.com/p/1969519933500158862