如果你正在用 VSCode Remote - Containers(或 WSL)连接 Docker 容器开发,同时想用 Gemini Code Assist,却在登录时卡死——浏览器打开授权页后一直转圈、提示失败——那你遇到的就是这个经典远程开发痛点。

本文完整复现问题 + 给出最可靠、零风险的解决方案(已帮无数远程用户验证通过),附详细命令和代理配置技巧。照着操作,5-10 分钟就能搞定!

问题根因(为什么你的代理设置没用?)

Gemini Code Assist 的登录流程使用 Google OAuth + localhost 回调

  • 主机浏览器打开授权页后,Google 会回调 http://localhost:...(容器自己的地址)。

  • 主机浏览器根本访问不到容器内部的 localhost,导致整个流程卡死。

即使你已经在容器里正确设置了 HTTP_PROXY / HTTPS_PROXYOAuth 回调阶段仍然不受代理影响(这是远程/Dev Container 的已知问题)。

你的代理对普通 API 请求有效,但对登录流程无效。

终极解决方案:用 gcloud CLI 设备代码认证(绕过浏览器回调)

这个方法被 Google 官方社区和远程开发者反复验证有效,扩展会自动识别 gcloud 凭证,无需任何浏览器回调。

操作步骤(全部在 VSCode 远程终端内执行)
  1. 打开远程终端
    VSCode 左下角点击「远程」图标 → 选择你连接的 Docker 容器 → 新建终端(必须在容器内部操作)。

  2. 安装 gcloud CLI(如果还没装)

    curl https://sdk.cloud.google.com | bash
    exec -l $SHELL          # 刷新环境变量
    gcloud --version        # 验证是否安装成功
    
  3. 执行设备代码认证(核心步骤)

    gcloud auth login
    
    • 终端会输出一个 URL 和一个 验证码

    • 在你主机的浏览器(有代理、能正常上网)打开那个 URL。

    • 用 Google 账号登录并授权。

    • 把浏览器显示的验证码复制粘贴回终端,回车。

  4. 额外执行一次 Application Default Credentials(强烈推荐)

    gcloud auth application-default login
    

    (同样走设备代码流程,再操作一次即可)

  5. 重启 VSCode 远程窗口

    • Ctrl + Shift + P → 输入 Developer: Reload Window 并执行。

    • 或者完全断开远程连接后重新连接。

  6. 再次尝试登录 Gemini Code Assist

    • 点击扩展里的 Sign in,应该能直接识别凭证或顺利完成登录。

代理配置检查与修正(最容易踩的坑)

先验证代理是否真的在容器内生效:

curl -I https://oauth2.googleapis.com

如果失败,代理地址很可能还是用了 127.0.0.1(Docker 常见坑)。

正确做法(Docker Desktop + WSL)

在容器 ~/.bashrc(或 /etc/environment)里添加以下内容:

export HTTP_PROXY=http://host.docker.internal:7890
export HTTPS_PROXY=http://host.docker.internal:7890
export NO_PROXY=localhost,127.0.0.1,.google.com,.googleapis.com

执行后立即生效:

source ~/.bashrc

双保险:VSCode 远程设置里也加上相同代理(设置 → Proxy)。

登录成功后如何查看额度?

  • 终端输入 gemini 后输入 /stats

  • 或在扩展聊天面板 / 状态栏查看

  • 网页 Dashboard(可选):Google Cloud Console → Gemini Code Assist

更多推荐