Ai
主页 > Ai >

Codex远程服务器登陆的实现

2026-06-07 | 佚名 | 点击:

实现:

核心思路:
通过 SSH RemoteForward 将服务器的网络请求转发到本地代理端口,让服务器“借用”本机梯子出网。

环境说明

本机

远程服务器

原理说明

服务器无法直接访问 OpenAI 相关域名,导致 Codex 登录失败,而本机代理可以正常访问外网。通过 SSH 反向端口转发的流程如下:

服务器访问 127.0.0.1:17897
↓ SSH 隧道
Mac 访问 127.0.0.1:7897(本地代理)

外网

即:服务器通过 SSH 隧道,将流量转回本地代理端口。

Step 1:确认本地代理端口可用

在 Mac 终端执行:

1

nc -vz 127.0.0.1 7897

必须看到类似以下输出,否则说明代理未启动或端口错误:

1

Connection to 127.0.0.1 port 7897 [tcp/*] succeeded!

Step 2:建立 SSH RemoteForward 隧道

在 Mac 执行(请替换 USER 与 SERVER_IP):

1

ssh -N -R 17897:127.0.0.1:7897 USER@SERVER_IP

示例:

1

ssh -N -R 17897:127.0.0.1:7897 ubuntu@1.2.3.4

说明:

  • 17897 为服务器端本地端口
  • 7897 为本地代理端口
  • 注意:隧道建立后不要关闭该终端。

Step 3:服务器端验证隧道

另开一个终端登录服务器:

1

ssh USER@SERVER_IP

在服务器执行:

1

nc -vz 127.0.0.1 17897

若显示以下内容,说明转发成功:

1

Connection succeeded!

Step 4:验证服务器是否可通过代理访问外网

在服务器执行:

1

curl -I -x "http://127.0.0.1:17897" "https://www.google.com"

若返回类似以下状态码,说明服务器已经可以借用本地代理访问外网:

1

HTTP/2 200

Step 5:让 Codex 走代理登录

在服务器终端执行临时代理配置:

1

2

export http_proxy="[http://127.0.0.1:17897](http://127.0.0.1:17897)"

export https_proxy="[http://127.0.0.1:17897](http://127.0.0.1:17897)"

然后登录 Codex:

1

codex sign

后续即可正常进行对话:

1

codex chat

长期使用方案(推荐 proxy_on / proxy_off)

不建议在服务器端配置永久全局代理,否则一旦 SSH 隧道断开,系统网络会全部卡住。推荐使用快捷命令按需开启。

在服务器编辑 ~/.bashrc:

1

nano ~/.bashrc

在文件末尾添加:

1

2

3

4

5

6

7

8

9

10

proxy_on() {

  export http_proxy="[http://127.0.0.1:17897](http://127.0.0.1:17897)"

  export https_proxy="[http://127.0.0.1:17897](http://127.0.0.1:17897)"

  echo "Proxy enabled"

}

 

proxy_off() {

  unset http_proxy https_proxy

  echo "Proxy disabled"

}

使其生效:

1

source ~/.bashrc

使用方式:

1

2

3

proxy_on      # 开启代理

codex chat    # 愉快使用

proxy_off     # 用完关闭代理

Mac 端一键脚本(推荐)

为了避免每次都手动输长长的 SSH 命令,可以在 Mac 端配置自动化脚本。

1. 配置 SSH 免密登录

1

ssh-copy-id -i ~/.ssh/id_ed25519.pub USER@SERVER_IP

验证是否成功:

1

ssh USER@SERVER_IP "echo OK"

2. 开启隧道脚本

创建存放脚本的目录及文件:

1

2

mkdir -p ~/bin

nano ~/bin/codex-tunnel-on

写入以下内容(注意替换 USER@SERVER_IP):

1

2

3

4

5

6

7

8

9

10

#!/usr/bin/env bash

 

nohup ssh -N \

  -o ExitOnForwardFailure=yes \

  -o ServerAliveInterval=30 \

  -R 17897:127.0.0.1:7897 \

  USER@SERVER_IP \

  >/dev/null 2>&1 &

 

echo "Codex tunnel started"

赋予执行权限:

1

chmod +x ~/bin/codex-tunnel-on

3. 关闭隧道脚本

创建文件:

1

nano ~/bin/codex-tunnel-off

写入以下内容:

1

2

3

#!/usr/bin/env bash

pkill -f "ssh.*17897:127.0.0.1:7897"

echo "Codex tunnel stopped"

赋予执行权限:

1

chmod +x ~/bin/codex-tunnel-off

日常使用流程

???? 开始工作:

  1. Mac 端运行隧道脚本:

    1

    codex-tunnel-on

  2. 服务器端开启代理并使用:

    1

    2

    proxy_on

    codex chat

???? 结束工作:

  1. 服务器端关闭代理:

    1

    proxy_off

  2. Mac 端关闭隧道:

    1

    codex-tunnel-off

注意事项

  • 不要将本地的 .codex 文件夹直接复制到服务器。
  • 不要在本地运行 Codex 再试图操作远程文件。
  • SSH 隧道关闭后,如果服务器环境变量未 unset,服务器将无法正常访问外网(这就是为什么推荐使用 proxy_off)。
  • 该方案成本极低、结构清晰、无隐私泄漏风险,非常适合长期使用 Remote SSH 工作流的开发者。
原文链接:
相关文章
最新更新