如何在 WSL 中使用 Codex 教程(WSL与Windows同代理设置)
目标
让 WSL 中的 Codex CLI 和 VS Code 里的 Codex 插件都能正常使用 Windows 上的代理,并且以后不需要每次手动设置代理或重复登录。
一、基本原理
Windows 上的代理软件通常显示类似:
代理地址:127.0.0.1:<代理端口>
HTTP/SOCKS 端口:<代理端口>
局域网代理:开启
在 Windows 本机里,127.0.0.1:<代理端口> 表示 Windows 自己的代理服务。
但在 WSL 里,127.0.0.1 指的是 WSL 自己,不是 Windows。因此 WSL 不能直接使用:
127.0.0.1:<代理端口>
而应该使用 WSL 看到的 Windows 网关地址:
<WSL中看到的Windows网关IP>:<代理端口>
这个网关 IP 可以用下面命令自动获取:
ip route | awk '/default/ {print $3; exit}'
二、先确认 Windows 代理软件设置
在 Windows 代理软件中确认:
HTTP/SOCKS 端口:<代理端口>
局域网代理:已开启
注意:教程中所有 <代理端口> 都要替换成你代理软件里显示的端口号。
三、在 WSL 中测试代理是否可用(前提条件)
打开 WSL 终端,执行:
host_ip=$(ip route | awk '/default/ {print $3; exit}')
echo $host_ip
这会输出 WSL 看到的 Windows 网关 IP。
然后测试 HTTP 代理:
curl -x http://$host_ip:<代理端口> -4 -s https://ifconfig.me/ip
echo
再测试 SOCKS 代理:
curl -x socks5h://$host_ip:<代理端口> -4 -s https://ifconfig.me/ip
echo
如果能输出代理后的公网 IP,说明 WSL 可以通过 Windows 代理联网。
四、临时设置 WSL 代理
确认代理可用后,可以先临时设置当前终端的代理:
export host_ip=$(ip route | awk '/default/ {print $3; exit}')
export http_proxy=http://$host_ip:<代理端口>
export https_proxy=http://$host_ip:<代理端口>
export HTTP_PROXY=$http_proxy
export HTTPS_PROXY=$https_proxy
export all_proxy=socks5h://$host_ip:<代理端口>
export ALL_PROXY=$all_proxy
然后测试:
curl -4 -s https://ifconfig.me/ip
echo
如果输出的是代理后的公网 IP,说明当前 WSL 终端已经走代理了。
这个临时设置只影响当前终端,关闭终端后就会失效,不会破坏 WSL。
五、安装并登录 Codex CLI
确认 WSL 已经走代理后,安装 Codex CLI:
curl -fsSL https://chatgpt.com/codex/install.sh -o /tmp/codex-install.sh
sh /tmp/codex-install.sh
安装完成后检查:
codex --version
然后登录:
codex login
登录成功后,不要随便执行:
codex logout
因为 VS Code 插件和 WSL 里的 Codex CLI 可能会共享登录缓存。退出登录后,VS Code 里也可能需要重新登录。
六、把代理写入 ~/.bashrc
为了以后每次打开 WSL 或 VS Code 终端都自动走代理,可以把代理配置写入 ~/.bashrc。
先备份:
cp ~/.bashrc ~/.bashrc.backup_before_proxy
然后编辑:
nano ~/.bashrc
在文件最后加入:
# ===== WSL proxy for Windows proxy software =====
export PROXY_PORT="<代理端口>"
export host_ip=$(ip route | awk '/default/ {print $3; exit}')
export http_proxy=http://$host_ip:$PROXY_PORT
export https_proxy=http://$host_ip:$PROXY_PORT
export HTTP_PROXY=$http_proxy
export HTTPS_PROXY=$https_proxy
export all_proxy=socks5h://$host_ip:$PROXY_PORT
export ALL_PROXY=$all_proxy
export no_proxy=localhost,127.0.0.1,::1,$host_ip
export NO_PROXY=$no_proxy
# ===============================================
注意:把 <代理端口> 替换成你的代理软件显示的端口号。
在 nano 中保存和退出:
Ctrl + O
Enter
Ctrl + X
然后让配置立即生效:
source ~/.bashrc
测试:
curl -4 -s https://ifconfig.me/ip
echo
如果输出的是代理后的公网 IP,说明配置成功。
七、在 VS Code 里检查环境
在 WSL 终端里进入项目目录后打开 VS Code ,并打开内置终端,执行:
curl -4 -s https://ifconfig.me/ip
echo
which codex
codex --version
正常情况下:
-
curl输出代理后的公网 IP; -
which codex能找到 Codex CLI; -
codex --version能显示版本号。
如果这些都正常,说明 VS Code 的 WSL 终端已经继承了代理环境。
八、使用 VS Code Codex 插件
在 VS Code 扩展市场安装或启用 Codex 插件。
如果插件显示未登录,可以点击插件里的登录按钮。
一般情况下,不需要先退出 WSL 终端里的 Codex 登录,也不需要删除 ~/.codex。如果之前已经在 WSL 中成功登录过 Codex,VS Code 插件可能会复用同一个 WSL 用户目录下的登录状态。
九、以后每天怎么使用
日常使用流程:
1. 先打开 Windows 代理软件
2. 确认代理端口没变,局域网代理开启
3. 打开 WSL
4. 进入项目目录
5. 执行 code .
6. 在 VS Code 中使用 Codex
一般不需要重复:
export ...
codex login
也不需要执行:
codex logout
十、什么时候需要重新检查
以下情况需要重新检查代理或登录:
1. Windows 代理端口变了
如果代理软件里的端口改变,需要修改 ~/.bashrc 中:
export PROXY_PORT="<代理端口>"
然后执行:
source ~/.bashrc
2. VS Code 不是 WSL 模式
如果 VS Code 左下角没有显示:
WSL: Ubuntu...
建议关闭 VS Code,然后在 WSL 里重新执行:
cd ~/你的项目目录
code .
3. Codex 插件提示未登录
先不要执行 codex logout。
在 VS Code 的 WSL 终端里检查:
curl -4 -s https://ifconfig.me/ip
echo
which codex
ls -l ~/.codex
确认代理、Codex CLI、登录缓存是否正常。
4. WSL 重装了
如果 WSL 重装,之前的 Codex CLI 和登录信息会丢失,需要重新:
设置代理
安装 Codex CLI
登录 Codex
配置 ~/.bashrc
十一、如何撤销代理配置
因为这里只修改了当前用户的 ~/.bashrc,没有改 WSL 底层网络配置,所以恢复很简单。
执行:
cp ~/.bashrc.backup_before_proxy ~/.bashrc
source ~/.bashrc
或者手动编辑:
nano ~/.bashrc
删除之前加入的这一段:
# ===== WSL proxy for Windows proxy software =====
...
# ===============================================
保存退出即可。
十二、不建议随便修改的文件
为了避免 WSL 出问题,普通代理配置不建议优先修改这些底层文件:
/etc/wsl.conf
/etc/resolv.conf
C:\Users\<Windows用户名>\.wslconfig
/etc/passwd
也不建议一开始就修改 WSL 网络模式、DNS、默认用户等系统级配置。
优先使用:
临时 export 测试
→ 确认成功
→ 写入 ~/.bashrc
这是风险最低、最容易恢复的方式。
更多推荐
所有评论(0)