# 2026-03-09 ## Claude OAuth 认证失败 (21:00-21:38) - **目标**: 更新 CLIProxyAPI 的 Claude 认证 (mf0@msn.com) - **问题**: OAuth 回调一直失败 - SSH 隧道建立成功 (54545 端口) - CLIProxyAPI 在服务器上运行 - Chrome 访问 OAuth URL 并点击 Authorize - 但回调重定向到 localhost:54545/callback 时显示 chrome-error://chromewebdata/ - 回调请求没有到达服务器 - **尝试过的方法**: - CDP 自动化填写邮箱 (失败,无法填写) - 手动登出 Maka 账号,重新登录 mf0@msn.com - 多次重启 SSH 隧道和 OAuth 进程 - 使用不同的 OAuth URL (多次生成新的 code_challenge) - **根本原因**: 不明确,可能是: - SSH 隧道转发有问题 - Chrome 的安全策略阻止了 localhost 回调 - CLIProxyAPI 的 OAuth 回调监听有问题 - **最终解决** (21:52 成功): - **State mismatch 是关键问题**: 每次启动 CLIProxyAPI 会生成新的 OAuth state,必须用最新的 URL - 日志显示 "State mismatch: expected X, got Y" → 说明用了旧 URL - **Docker 容器缺少配置文件**: 容器启动失败因为找不到 `/CLIProxyAPI/config.yaml` - **解决方案**: 1. 创建 config.yaml: `port: 8317, api-keys: ["sk-cliproxy-default-key-2026"], auth-dir: "/root/.cli-proxy-api"` 2. 挂载到容器: `-v /opt/cliproxy/config.yaml:/CLIProxyAPI/config.yaml:ro` 3. 挂载认证目录: `-v /root/.cli-proxy-api:/root/.cli-proxy-api` - **正确流程**: 1. 启动 CLIProxyAPI (在配置目录下): `cd /root/.cli-proxy-api && /tmp/CLIProxyAPI -claude-login -no-browser -oauth-callback-port 54545` 2. 建立 SSH 隧道: `ssh -L 54545:127.0.0.1:54545 root@195.128.100.201` 3. 获取最新的 OAuth URL (包含新 state) 4. Chrome 访问并点击 Authorize 5. 回调成功 → 认证文件更新 6. 重启 Docker 容器 ## CLIProxyAPI Docker 配置 (21:56) - **容器启动命令**: ```bash docker run -d --name cli-proxy-api --restart always \ -p 8317:8317 \ -v /opt/cliproxy/config.yaml:/CLIProxyAPI/config.yaml:ro \ -v /root/.cli-proxy-api:/root/.cli-proxy-api \ eceasy/cli-proxy-api:latest ``` - **配置文件位置**: /opt/cliproxy/config.yaml - **认证文件位置**: /root/.cli-proxy-api/*.json - **API 端点**: http://195.128.100.201:8317/v1 - **API Key**: sk-cliproxy-default-key-2026 - **可用模型**: claude-sonnet-4-6, claude-opus-4-6, gpt-5.4, gemini-2.5-pro 等