整活开头:你是否还在为课题组服务器上无法连外网而使用不了 GPT + Codex cli 而发愁?你是否还在因自己冲了 GPT plus 而无法充分利用 Codex 额度而锤头顿足?跟着本文,我将手把手教你如何在无法连外网的远程服务器上使用 GPT + Codex cli 进行 vibe coding!

整活结束,其实这类教程在网上也已经有一些资源了,但是多多少少有些细节没讲清楚 or 有很多后续容易出问题的点没有讲清楚,所以干脆自己做个更详细的教程出来,也算水一篇博客。

前提需求:

  1. 订阅了 GPT plus 及以上的套餐。
  2. 有一个自己的 VPN/机场/梯子。
  3. 使用的 IDE 为 VScode(本文的示例是以 VScode 为准的)。

流程

1. 安装 Codex cli

安装 Codex cli 并不困难,可以参考我在前不久发的文章进行操作,仅需把命令换为 npm install -g @openai/codex

2. Remote config 中配置 RemoteForward

通过配置 RemoteForward 可以让远端服务器走本地主机的某个端口,这是最关键的一步。首先点击左侧 Remote Explorer 标记,然后在 SSH 的小齿轮里打开 config,或者直接在上侧搜索栏中输入 >Remote-SSH: Open SSH Configuration File 打开。

在对应服务器的 SSH 配置下增加一行 RemoteForward 14514 localhost:7890,此处:

  • 14514 为后续注册的服务器上的监听端口。这个数字可以自己挑个喜欢的,但要遵守以下规则:1. 不能超过 65535,最好在 1024–49151 之间;2. 不要用服务器上已经被占用的端口(可以通过 ss -ltnp | grep 14514)检查是否已经存在。
  • 7890 为本地电脑的 VPN 端口。这个一般可在代理软件的某个界面可见,以 Clash for Windows 为例,其 General 的最上方即其端口:

在配置好后,打开/重新连接服务器,再次输入 ss -ltnp | grep 14514 检查是否出现该端口:

如果能看到 127.0.0.1:14514,说明 SSH 远程端口转发已经生效。

3. 配置转发

如果只是为了让 Codex cli 在终端中联网,通常配置环境变量即可(这里及之后使用的端口号都应和上面 RemoteForward 的设置保持一致):

1
2
3
4
export http_proxy=http://127.0.0.1:14514
export https_proxy=http://127.0.0.1:14514
export HTTP_PROXY=http://127.0.0.1:14514
export HTTPS_PROXY=http://127.0.0.1:14514

如果希望每次打开 terminal 都自动生效,可以把它们加入 ~/.bashrc。测试是否转发成功:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ curl -I https://google.com
HTTP/1.1 200 Connection established

HTTP/2 301
location: https://www.google.com/
content-type: text/html; charset=UTF-8
content-security-policy-report-only: object-src 'none';base-uri 'self';script-src 'nonce-GBDuYc8bD3Sf7NYXKvqTXQ' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp
date: Thu, 02 Jul 2026 10:22:58 GMT
expires: Sat, 01 Aug 2026 10:22:58 GMT
cache-control: public, max-age=2592000
server: gws
content-length: 220
x-xss-protection: 0
x-frame-options: SAMEORIGIN
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000

如果返回中有 Connection established,说明现在已经可以成功转发,此时就可以通过 Codex cli 中的 device code 方式登录 GPT 并且进行后续使用(注:设备码的使用要调整 chatGPT 中的一些设置,跟着其引导来即可)。

输入设备码
登录成功

如果你想在 VScode remote 安装 Codex 插件并使用,则需要同时配置 VScode 本身的代理,可以在 VSCode Settings 的 Remote 设置中搜索 proxy:

Http: Proxy 选项卡中,输入 http://127.0.0.1:14514,保存后 Reload window 重启即可。这一个方法对 VScode 拓展中的 github Copilot 自动补全也有用(走本地转发能让其更稳定),因此推荐有需求的朋友进行配置。

注意事项

  1. 在设置转发后,终端里除了 Codex cli 以外的部分网络行为也会走你的本地机器 VPN,这会导致:

    • 一些应用出现问题(例如 conda 下载安装包出错)。
    • wget/curl/python request 等走你的梯子过,如果你的梯子是有流量限制的,那么这可能会在不经意间消耗大量流量。
    • 解决方法是在当前 terminal 内临时取消代理,即将环境变量 unset 掉:unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
  2. 初次配置后,Codex cli 可能遇到 sandbox / bubblewrap 相关问题,例如:

1
bwrap: Creating new namespace failed, likely because the kernel does not support user namespaces. bwrap must be installed setuid on such systems.

如果服务器已经安装了 bubblewrap,并且你有 root 权限,可以通过临时启用 user namespace 解决该问题:

1
sysctl -w user.max_user_namespaces=15000

如果想要持久化配置则可以创建 sysctl 配置文件:

1
2
3
4
5
cat >/etc/sysctl.d/99-userns.conf <<'EOF'
user.max_user_namespaces = 15000
EOF

sysctl --system

但经过 GPT 的搜索,这个策略有一定风险:启用普通用户创建 user namespace 后,一些原本普通用户触达不到的内核代码路径会变得可触达,从而扩大本地提权漏洞的攻击面。不过个人感觉对于用户都可信的课题组服务器,这个风险通常可以接受。

后记

总从有了 CC 和 Codex,工作效率已经不可同日而语。技术在发展,生产力在进步,只愿诸君不要成为那工业革命时拿手织布的人。