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 隧道。连接断开后,使用这些变量的程序可能无法联网;不再使用此方案时,应移除或注释对应设置。

相关推荐
一个天蝎座 白勺 程序猿13 小时前
KingbaseES数据库归档重做日志文件管理:从配置到运维的实战指南
运维·数据库·oracle·kingbasees·金仓数据库
分布式存储与RustFS17 小时前
镜像仓库的层别堆本地盘:用 RustFS 给 Docker Registry 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
陈希12317 小时前
Linux 防火墙配置实战:firewalld、iptables 与云安全组
linux·运维·服务器
@兽血沸腾19 小时前
Windows系统安装Jenkins部署应用至远程Windows服务器操作指南
运维·服务器·jenkins
讯捷蓝达1 天前
戴尔R720xd服务器卡死在 “Configuring Memory...Done“,换了内存还是卡?问题根本不在内存
运维·服务器
爱和冰阔落1 天前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
lisanmengmeng1 天前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮1 天前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
上火的金鱼妹1 天前
k8s生产实际问题排查(网关,数据库读写等)
运维·服务器
孙克旭_1 天前
k8s基础组件与创建资源
运维·docker·容器·kubernetes