Dushiqi1987 / codex-remote-Skill
git clone https://github.com/Dushiqi1987/codex-remote-Skill.git
本地 Codex 连接服务器 Codex CLI:通过 SSH 反向隧道共享本地 HTTP 代理或直连网络,适用于 AutoDL 等 GPU 科研服务器。含 Python 转发器、PowerShell 隧道脚本、中文教程与测试。
+0
stars, 24h · #40,422
+~0
stars, 7 days · #45,241
+116
stars, 30 days · #6,234
116
★ total
12
forks · 0 open issues
Star history (as recorded here)
LanguagePython
License—
Created2026-10-12 (11d ago)
Last push11d ago
Watchers0
OwnerUser
Links
README excerpt
# 本地 Codex 连接服务器 Codex CLI **让 GPU 服务器上的 Codex CLI,通过 SSH 反向隧道共享本地电脑的网络出口。** Agent skill for sharing a local HTTP proxy or a directly reachable network with a remote Codex CLI over an SSH reverse tunnel. Python standard library only; Windows local machine + Linux GPU server. 大学生、研究生常在 AutoDL 等平台租用 GPU 训练模型。某些服务器的网络无法连接 Codex 服务,而自己的电脑具备可用的代理软件或网络。本项目把配置过程整理成可复用的 skill,附带端口转发、代理配置、验证和回滚脚本。 它共享的是网络出口。Codex CLI 仍然运行在服务器上,直接处理服务器上的代码、数据和训练任务;本地 Codex 和服务器 Codex 不会因此共享对话或账号登录状态。 ## 两种方案 | 本地条件 | 本地 HTTP 端口 | 是否运行 Python 转发器 | | --- | --- | --- | | 有可用的代理软件 | 软件的 HTTP / mixed 端口,例如 `7890` | 不需要,SSH 直接转发到软件端口 | | Wi-Fi / VPN / 系统路由本身能访问目标服务 | 本项目监听 `11450` | 需要运行 `local_forward.py` | Wi-Fi 方案的脚本使用操作系统的 DNS 和路由,不会指定某块网卡。只有浏览器能访问、命令行不能访问时,优先检查是否用了浏览器专用代理;这不满足“本地网络直连”的前提。纯 SOCKS5 端口不能当成 HTTP 代理端口。 [code] SSH 连接由本地电脑发起。`-R` 左边的监听地址在服务器,右边的目标地址在本地电脑。无需给服务器开放公网代理端口。HTTPS / WSS 经 HTTP CONNECT 透传,TLS 仍由客户端校验。 ## 准备条件 - 本地:Windows PowerShell、OpenSSH 客户端(`ssh -V`)、可访问目标服务的出口。直接网络方案还需要 Python 3.9+。 - 服务器:Linux、SSH 允许远程 TCP 转发、Python 3.9+(使用附带配置脚本时)、已安装 Codex CLI(`codex --version`)。 - 从租赁平台获得自己的 SSH 主机、SSH 连接端口、用户名。示例中的主机和端口都应替换为自己的参数。 - Codex 需要独立有效的登录或 API 凭据。网络通道不解决账号权限、额度和服务地区支持问题。 ## 安装这个 skill 使用 Skills CLI 一条命令安装到 Codex(需要 Node.js 18+ 和可访问 GitHub 的网络): [code] 也可以克隆后手动安装: [code] 克隆或下载此仓库后,将**整个文件夹**复制到 Codex 的 skill 目录;保持脚本和参考文档一起安装。 Windows 本地示例(在仓库的父目录执行;目标已存在时先检查,避免覆盖): [code] Linux 示例: [code] 若你的客户端使用 `~/.agents/skills` 或自定义目录,将同一文件夹放到对应位置。新安装的 skill 在下一轮对话中可用;未显示时重新打开客户端。 可直接向本地 Codex 说: > 使用 $codex-remote-bridge 帮我连接服务器上的 Codex CLI。我的 SSH 命令是 ssh -p 你的端口 root@你的主机;本地代理软件的 HTTP 端口是 7890。 或者: > 使用 $codex-remote-bridge。我的本地网络能直接访问目标服务,请用 Python 监听 11450,把服务器 17891 反向转发到本地。 ## 手动操作:三个窗口 以下本地命令均在仓库根目录执行。**步骤 1、2 的窗口需要保持运行,步骤 3 在单独的服务器 SSH 终端执行。** ### 1. 本地电脑:准备出口 **方案 A:本地代理软件。** 查看软件中的 HTTP 或 mixed 端口。假设为 `7890`,在本地 PowerShell 验证: [code] 不用启动本项目的 Python 转发器。下一步将隧道右侧端口改成 `7890`。 **方案 B:本地网络直接可访问。** 新开本地 PowerShell: [code] 看到 `Local HTTP proxy: http://127.0.0.1:11450` 后,在另一个本地窗口验证: [code] 脚本支持 HTTP 请求方法和请求体、CONNECT、流式响应,以及 HTTP WebSocket Upgrade。HTTPS / WSS 的加密数据在 CONNECT 内传输。它没有 TLS 解密、上游 SOCKS 功能或全系统 VPN 功能。连接空闲超时默认 3600 秒,可用 `--idle-timeout` 调整;单次阻塞网络读写超时由 `--connect-timeout` 控制。 ### 2. 本地电脑:建立 SSH 反向隧道 把 `12345` 替换为平台给你的 **SSH 连接端口**,主机替换为你的主机。下面的 `connect.nmb1.seetacloud.com` 仅沿用需求中的示例,不代表当前租赁实例。 直接网络方案: [code] 代理软件方案(假设本地软件端口 `7890`): [code] 也可使用参数化脚本,先输出命令再运行: [code] 使用 SSH 密钥时加 `-IdentityFile 'C:\path\to\your-key'`。首次连接按平台提供的指纹核验主机,不使用 `StrictHostKeyChecking=no`。`-N -T` 表示只运行隧道,成功后没有服务器 shell、窗口安静等待是正常现象。`ExitOnForwardFailure` 检查远端监听能否建立,**不保证本地代理或最终服务已连通**。 若 PowerShell 阻止 `.ps1` 执行,直接使用上面的 `ssh` 命令即可。 ### 3. 服务器:配置并显式加载代理 另开 SSH 终端进入服务器。推荐把脚本通过 `scp` 上传,避免服务器必须先联网下载仓库: [code] 然后在服务器执行: [code] 配置脚本更新 `~/.codex/.env` 的六个代理变量,保留其他配置,并在更改已有文件前生成 `.env.backup-时间戳`。设置了 `CODEX_HOME` 时跟随该目录;也可显式传入 `--env-file /path/to/.env`。预览不会打印原文件中的凭据。 如果不上传脚本,可以按你的原始流程手动写入。以下 `cat >` 会覆盖文件,所以先备份已有文件;已有其他环境配置时使用上面的配置脚本更合适: [code] **写入文件不等于当前进程