VSCode Remote SSH 中 Codex 连接超时的排查与解决记录

📅 2026/7/1 2:41:05
VSCode Remote SSH 中 Codex 连接超时的排查与解决记录
VSCode Remote SSH 中 Codex 连接超时的排查与解决记录1. 问题现象本地 Windows 上 Codex 可以正常使用但通过 VSCode Remote SSH 连接 Orange Pi 后在远程环境里使用 Codex 会出现request timed out远程机器是Orange Pi / Linux ARM64Codex 配置大致如下model_provider custom model gpt-5.5 model_reasoning_effort high [model_providers.custom] name apikey.quest base_url https://apikey.quest/v1 wire_api responses env_key APIKEY_QUEST_API_KEY一开始怀疑是config.toml配置问题后来确认不是核心问题。2. 核心原因VSCode Remote SSH 模式下Codex 插件/远程 CLI 实际使用的是远程服务器 Orange Pi 的网络不是 Windows 本地电脑的网络。也就是说VSCode 本地窗口 ↓ Remote SSH ↓ Orange Pi 上运行 Codex ↓ Orange Pi 自己访问 API而 Orange Pi 的网络只能访问部分网站curl-I--max-time10https://www.baidu.com能返回200 OK。但是curl-I--max-time10https://www.google.comcurl-I--max-time10https://api.openai.com/v1/models会超时。所以 Codex 在远程机器上访问模型 API 时也会超时。3. 解决思路把 Windows 本地的代理端口通过 SSH 反向转发给 Orange Pi。最终链路变成Orange Pi Codex ↓ Orange Pi 127.0.0.1:10808 ↓ SSH RemoteForward ↓ Windows 127.0.0.1:10808 ↓ Windows 本地代理/VPN ↓ apikey.quest / OpenAI API这样远程 Orange Pi 就可以借用 Windows 本地代理访问外网。4. 确认 Windows 本地代理端口Windows 设置里看到本地代理端口是127.0.0.1:10808所以后面统一使用10808如果你的代理软件端口不同比如7890、7897、10809需要替换成自己的端口。5. 配置 SSH RemoteForward在 Windows PowerShell 打开 SSH 配置notepad$env:USERPROFILE\.ssh\config加入或修改 Orange Pi 的 Host 配置Host orangepi HostName 192.168.3.19 User orangepi RemoteForward 10808 127.0.0.1:10808含义是远程 Orange Pi 的 127.0.0.1:10808 转发到 Windows 本地的 127.0.0.1:10808修改后需要断开 VSCode Remote SSH然后重新连接 Orange Pi。6. 测试代理转发是否成功重连 VSCode Remote SSH 后在 Orange Pi 远程终端执行curl-I--max-time20-xhttp://127.0.0.1:10808 https://www.google.com成功时会看到HTTP/1.1 200 Connection established HTTP/2 200再测试 OpenAIcurl-I--max-time20-xhttp://127.0.0.1:10808 https://api.openai.com/v1/models成功时会看到HTTP/1.1 200 Connection established HTTP/2 401这里401是正常的因为这个测试没有传 OpenAI 官方 API Key。重点是它没有 timeout。7. 测试 apikey.quest 的 Responses APICodex 使用的是wire_api responses所以它实际请求的是https://apikey.quest/v1/responses一开始直接 curl 时卡住POST /v1/responses HTTP/2 We are completely uploaded and fine后来发现是 HTTP/2 链路容易卡住。改成 HTTP/1.1 并使用 JSON 文件发送请求体后成功。在 Orange Pi 上执行cat/tmp/responses.jsonEOF { model: gpt-5.5, input: hello } EOFcurl--http1.1-i--max-time60-xhttp://127.0.0.1:10808 https://apikey.quest/v1/responses\-HAuthorization: Bearer$APIKEY_QUEST_API_KEY\-HContent-Type: application/json\--data-binary /tmp/responses.json成功返回HTTP/1.1 200 Connection established HTTP/1.1 200 OK响应里能看到模型返回text:Hello.这说明API Key 没问题 model gpt-5.5 没问题 apikey.quest /v1/responses 没问题 Orange Pi 走代理也能通8. 给远程 Orange Pi 设置代理环境变量为了让 Codex CLI 使用代理在 Orange Pi 上执行nano~/.bashrc在文件末尾加入exportHTTP_PROXYhttp://127.0.0.1:10808exportHTTPS_PROXYhttp://127.0.0.1:10808exporthttp_proxyhttp://127.0.0.1:10808exporthttps_proxyhttp://127.0.0.1:10808然后执行source~/.bashrc验证不带-x的 curl 是否也能走代理curl-I--max-time20https://api.openai.com/v1/models如果能快速返回401说明代理环境变量生效。9. 安装远程 Codex CLI一开始远程执行codex报错bash: codex: command not found说明 Orange Pi 上没有安装 Codex CLI。安装命令curl-fsSLhttps://chatgpt.com/codex/install.sh|sh安装完成后验证whichcodex codex--version成功输出/home/orangepi/.local/bin/codex codex-cli 0.142.410. 验证远程 Codex CLI 成功在 Orange Pi 远程终端执行exportHTTP_PROXYhttp://127.0.0.1:10808exportHTTPS_PROXYhttp://127.0.0.1:10808exporthttp_proxyhttp://127.0.0.1:10808exporthttps_proxyhttp://127.0.0.1:10808cd/home/orangepi/Documents/orangepi_data_collect codex进入 Codex 后输入hello成功返回Hello.这说明远程 Codex CLI 已经跑通。11. VSCode Remote Settings 配置如果命令行 Codex 能用但 VSCode 插件还是 timeout说明 VSCode Remote 插件可能没有继承终端里的代理环境变量。在已经连接 Orange Pi 的 VSCode 窗口中Ctrl Shift P搜索Preferences: Open Remote Settings (JSON)注意要选Remote Settings不是本地 User Settings。加入{http.proxy:http://127.0.0.1:10808,https.proxy:http://127.0.0.1:10808}如果原来已有配置注意 JSON 逗号格式例如{editor.fontSize:14,http.proxy:http://127.0.0.1:10808,https.proxy:http://127.0.0.1:10808}保存后执行Developer: Reload Window或者Remote-SSH: Kill VS Code Server on Host然后重新连接 Orange Pi。12. 最终远程 Codex 配置Orange Pi 上的~/.codex/config.toml建议保持简单model_provider custom model gpt-5.5 model_reasoning_effort high [model_providers.custom] name apikey.quest base_url https://apikey.quest/v1 wire_api responses env_key APIKEY_QUEST_API_KEY [projects./home/orangepi/code] trust_level trusted [projects./home/orangepi/code/cam_cz005] trust_level trusted [projects./home/orangepi/Documents/orangepi_data_collect] trust_level trusted不要把 Windows 本地的 Codex 配置复制到 Orange Pi因为里面有很多 Windows 路径例如C:\Users\... C:\Windows\...这些只能给 Windows 本地 Codex 用。13. 最终结论这次问题的根因不是 Codex 配置错误而是VSCode Remote SSH 下Codex 实际运行在 Orange Pi 上 Orange Pi 自己无法稳定访问 Google/OpenAI/API 中转 因此 Codex 请求超时。最终解决办法是通过 SSH RemoteForward把 Windows 本地代理转发给 Orange Pi 然后让 Orange Pi 的 curl、Codex CLI、VSCode Remote 插件都使用 127.0.0.1:10808 这个代理。成功标志curl 走代理能访问 Google curl 走代理能访问 api.openai.com curl 走代理能访问 apikey.quest /v1/responses 远程 codex 命令能回复 Hello14. 注意事项如果 Windows 本地代理/VPN 没开Orange Pi 仍然可以访问部分普通网站比如百度但无法通过这条代理链路访问 Google/OpenAI/API 中转。快速检测代理是否可用curl-I--max-time10-xhttp://127.0.0.1:10808 https://api.openai.com/v1/models只要快速返回401说明代理链路正常。如果 timeout、connection refused 或 proxy error则检查Windows 本地代理是否开启 VSCode Remote SSH 是否重新连接 SSH config 里的 RemoteForward 是否正确 端口 10808 是否和本地代理端口一致另外API Key 不要直接粘贴到聊天或公开笔记里日志中的Authorization: Bearer sk-...需要打码或删除。