在本地 VSCode 中使用 Codex 时如果通过 Remote-SSH 连接 AutoDL 或其他远端服务器常常会遇到 Codex 无法正常响应、请求中断、地区限制、stream disconnected before completion等问题。其根本原因通常是Codex 的请求实际发生在远端服务器环境中而服务器的网络出口并不会自动使用本地电脑已有的网络代理配置导致远端无法稳定访问 ChatGPT/Codex 相关服务。本文以 AutoDL 租用服务器为例完整记录如何在服务器环境中部署和使用 Codex包括 SSH 配置文件的创建与修改、端口转发RemoteForward的作用、本地代理端口确认、远端代理环境变量配置、Codex 登录认证文件的处理以及常见报错的排查思路。通过这些步骤可以让远端服务器借助本地网络环境完成 Codex 的连接从而在 VSCode Remote-SSH 场景下正常使用 Codex 辅助代码开发、实验调试和项目运行。本文适合正在使用 AutoDL、SeetaCloud 或其他云服务器进行深度学习实验并希望在远端 VSCode 环境中稳定使用 Codex 的同学参考。因为我日常是在AutoDL去租服务器的所以接下来的内容全部在此基础上进行操作的第一步在本机windows中去配置config文件首先我们在此电脑这里双击然后输入C:\Users\你的用户名\.ssh\config举个例子我的用户名是lucky, 那我就是下面的这种输入然后会出现下面图片显示的内容一定要记得在复制C:\Users\你的用户名\.ssh\config的过程中不要复制多了空格然后我们去点击红框的部分接着会让我们去选择应用打开我们选择使用记事本打开进入记事本以后其余什么都不要修改我们只需要加一行 RemoteForward 7890 127.0.0.1:7890 然后将红框中的端口号改我们自己的梯子的端口号例如如果你梯子的端口号是7879那么这一行就是RemoteForward 7878 127.0.0.1:7878。改好后Ctrls 保存一下关闭就行了。RemoteForward 7878 127.0.0.1:7878是 SSH 远程端口转发 配置。它的作用是在远端服务器上开一个7878端口把访问这个端口的流量通过 SSH 隧道转发到我们本地电脑127.0.0.1:7878。可能一些小伙伴在config文件中会有好多服务器的配置然后自己有点分不清楚因为我就这样的类似于下图这样然后我们只需要把这里的内容全都删掉如果不放心可以提前备份一下删掉以后我们重新进入一下Vscode然后再通过ssh连接服务器的时候就会自动去在这个config文件中增加最新的配置就只会显示一个啦到时候我们就可以找到自己当前使用的是哪个了然后就是增加一行RemoteForward 7878 127.0.0.1:7878记得改端口然后保存。第二步在VScode中对于远程配置进行修改在进行完了第一步的操作以后我们打开我们的VScode,然后通过ssh去连接到我们的服务器进入服务器以后同时按CtrlShiftP会出现下面的内容如果没有上面的显示的话我们可以输入框去输入Preferences:Open Remote Settings (JSON)然后就可以找到了切记不要忘了这个符号。接着点击第一个接着进入下面的页面中第一次进去应该是空的然后我们将下面的内容复制进去然后进行保存退出就行但是记得端口换成自己梯子的那个端口号。我箭头指向的地方端口号都需要修改{ http.proxy: http://127.0.0.1:7897, http.proxySupport: on, http.proxyStrictSSL: false, terminal.integrated.env.linux: { http_proxy: http://127.0.0.1:7890, https_proxy: http://127.0.0.1:7890, }, }以防大家不知道端口号在那里下图是简单的演示第三步在服务器上配置Codex如果直接在服务器登录会报错的所以我们进行下面的操作。1.确认一下我们本地是否部署过codex因为我自己是没有本地部署过的只是在我的VScode或者Pycharm中通过插件去使用的所以我先下载了本地的codexapp下图,并且进行了登录一定是登录过自己的chatgpt账号的才行下图所示的这种但是并没有生成对应的登录凭证可能是我下载的有问题所以只是一个exe文件所以进行了下面的一些操作我们同时按WinR然后输入cmd记住是在cmd里进行操作不是在powershell,不要搞错因为两者命令有些许差别然后输入我们的登录凭证查看的命令这是个简单的if-else的判断最后会输出存在/不存在。查看登录凭证的命令if exist %USERPROFILE%\.codex\auth.json (echo auth.json 存在) else (echo auth.json 不存在)如下图所示3.1登录凭证显示存在我们就继续进行操作登录凭证存在的话我们就接着往下操作如果不存在请看3.2的解决方案接下来我们将我们的登录凭证去上传到我们的服务器端这样就不用担心我们之前在服务登录时候的报错问题了首先在CMD输入下面的命令C:\Windows\System32\OpenSSH\scp.exe -P xxxxx %USERPROFILE%\.codex\auth.json rootconnect.nmb1.seetacloud.com:/root/.codex/auth.json这个命令需要根据你自己的服务器的配置进行简单修改下面是命令需要去改动的地方红色标记的部分是需要修改的部分首先第一个改动的xxxxx点是服务器对应的端口以我上面提到的config文件举例我的端口显示在port部分这就是我们的端口号粘过来放到我们的命令中然后第二个改动的connect.nmb1.seetacloud.com点就是我们的主机名称其实在之前的config中也有所以直接粘贴过来替换即可其他的都不用改C:\Windows\System32\OpenSSH\scp.exe -Pxxxxx%USERPROFILE%\.codex\auth.json rootconnect.nmb1.seetacloud.com:/root/.codex/auth.json输入命令回车然后会让我们输入服务器的密码服务器的密码粘贴到命令行以后是不显示的黑色的不用担心没复制进去。输入密码再进行回车如果你的服务的root目录下有.codex文件夹那么应该可以生成把登录凭证传上去如果没有这个目录的话就使用以下命令先去创建一个.codex文件夹具体命令如下然后再进行上传的操作,这个命令中的端口号和主机名称也需要按照自己的服务器的配置进行修改C:\Windows\System32\OpenSSH\ssh.exe -p xxxxx rootconnect.nmb1.seetacloud.com mkdir -p /root/.codex下面的就是我们操作成功后的样子可以看到我们的凭证已经传上去了然后我们找到打开文件夹这里点击打开文件夹后显示下面的内容然后我们点击.codex文件点击.codex文件后点击确定接着输入服务器的密码回车然后然后点击红框这里新建文件文件名字就叫做config.toml然后将下面的内容放到文件中然后保存文件重新进入以下服务器code就可以使用了[proxy] http_proxyhttp://127.0.0.1:7897 https_proxyhttp://127.0.0.1:78973.2登录凭证不存在我们如何进行操作登录凭证不存在说明我们还没有真正的本地部署codex,所以在cmd输入以下的命令npm i -g openai/codex输入后回车大概率就可以部署成功了如果没通过可以在命令行输入node -v和npm -v看看自己的电脑是否配置了如果没有配置的话是会出错的输入npm i -g openai/codex的结果是下面这样可以参考然后我们再输入我们的if exist %USERPROFILE%\.codex\auth.json (echo auth.json 存在) else (echo auth.json 不存在)结果如下说明我们的登录凭证有了json文件存在了