VS Code Remote SSH 使用 Codex:通过 SSH 转发本地代理

通过 VS Code Remote SSH 在服务器上开发时,本地 Codex 可以正常使用,远程插件却出现登录失败、模型列表加载超时等问题。本次通过复用登录凭据和 SSH 代理转发,成功让远程插件识别账户并进入使用界面。

1. 准备 SSH 连接

在本地 SSH 配置文件(Windows 通常为 %USERPROFILE%\.ssh\config)中配置服务器:

sshconfig 复制代码
Host my-server
    HostName your-server.example.com
    User your-user
    Port 33022

后续统一使用 my-server,避免手动输入 IP、端口时出错。

2. 复制本地 Codex 登录凭据

本地 Codex 已登录,且存在 %USERPROFILE%\.codex\auth.json 时,可以将凭据复制到可信任的服务器。这也是 Codex 官方支持的远程认证方式。

在本地 Windows CMD 中执行:

cmd 复制代码
ssh my-server "mkdir -p ~/.codex"
scp "%USERPROFILE%\.codex\auth.json" my-server:~/.codex/auth.json
ssh my-server "chmod 600 ~/.codex/auth.json"

复制会覆盖服务器上的同名文件。auth.json 包含登录令牌,不要公开或提交到 Git。复制凭据只处理认证,服务器仍需能够访问相关服务,且服务地区支持要求仍然适用。

3. 配置 SSH 自动代理转发

本例本地 HTTP 代理地址为 127.0.0.1:6450。将 SSH 配置补充为:

sshconfig 复制代码
Host my-server
    HostName your-server.example.com
    User your-user
    Port 33022
    RemoteForward 127.0.0.1:17890 127.0.0.1:6450
    ServerAliveInterval 30
    ServerAliveCountMax 3
    ExitOnForwardFailure yes

连接后,请求路径为:

text 复制代码
远程 Codex → 服务器 127.0.0.1:17890 → SSH 隧道 → 本地代理 127.0.0.1:6450

把 6450 换成自己的 HTTP 或 Mixed 代理端口。服务器端仅监听回环地址,无需向公网开放代理端口。

4. 为远程进程设置代理

在服务器的 ~/.bashrc 最开头 加入以下内容,放在可能提前执行的 return 之前:

bash 复制代码
export HTTP_PROXY=http://127.0.0.1:17890
export HTTPS_PROXY=http://127.0.0.1:17890
export http_proxy=http://127.0.0.1:17890
export https_proxy=http://127.0.0.1:17890

仅在终端执行 export,不会改变已启动的插件进程。因此,保存工作后,在 VS Code 中按 Ctrl+Shift+P,执行:

text 复制代码
Remote-SSH: Kill VS Code Server on Host...

选择对应服务器,然后重新连接。如果之前运行过独立的 SSH 转发命令,先停止旧隧道,避免端口冲突。

5. 验证配置

在重新连接后的远程终端执行:

bash 复制代码
echo "$HTTPS_PROXY"

预期输出:

text 复制代码
http://127.0.0.1:17890

测试代理连接:

bash 复制代码
curl -I --proxy http://127.0.0.1:17890 --connect-timeout 10 --max-time 30 https://chatgpt.com

若先出现 200 Connection established,随后返回带有 cf-mitigated: challenge 的 403,说明代理已建立连接,但网页触发了 Cloudflare 验证;不能单凭这一响应判断 Codex 是否可用。

最后打开 Codex,发送消息测试。本次插件日志出现以下记录,确认账户已成功识别:

text 复制代码
authenticatedAccountPresent=true
authMethod=chatgpt
result=succeeded

日常使用

配置完成后,使用 VS Code 连接 my-server 就会自动建立转发,不需要额外打开 CMD 隧道窗口。本地代理软件需保持运行,端口与配置一致。

服务器中的代理变量依赖 SSH 隧道。连接断开后,使用这些变量的程序可能无法联网;不再使用此方案时,应移除或注释对应设置。

相关推荐
会写代码的青蛙1 小时前
青蛙自动化
运维·自动化
AR-26710-2 小时前
Linux Day22——复习第三部分
linux·运维
迪康coolmu2 小时前
基于迪康端点安全一体化管理系统的公用终端上机与信创补丁实战
linux·运维·服务器·网络·安全·电脑
发量惊人的中年网工2 小时前
多分支网络怎样集中运维?SD-WAN监控、报障与服务范围指南
运维·网络
承渊政道2 小时前
极空间部署Portainer实战:Docker Socket、9000端口、容器管理与固定地址访问
运维·docker·容器·内网穿透·cpolar·portainer
Shadow(⊙o⊙)2 小时前
仿muduo实现高并发服务器——EPOLL设置与移除Poller.hpp管理Channel
运维·服务器·c++
.冰块.2 小时前
VMware+Ubuntu24.04 kubeadm 部署 K8s 1.30.2 三节点集群
运维·云原生·容器·kubernetes·k8s·容器编排
Vitaliy Kostrov(柯维远)2 小时前
客户端如何检查直播流:从流内标记到停止播放
android·运维·服务器·驱动开发·网络安全·系统架构·cdn
软件工程师文艺2 小时前
PLM系统的下一个十年:从MBD模型定义到产线仿真的技术路线拆解
运维·服务器·网络