{"meta":{"title":"排查 GitHub Copilot CLI 身份验证问题","intro":"登录 Copilot CLI时诊断身份验证失败问题。","product":"GitHub Copilot","breadcrumbs":[{"href":"/zh/copilot","title":"GitHub Copilot"},{"href":"/zh/copilot/how-tos","title":"操作方法"},{"href":"/zh/copilot/how-tos/copilot-cli","title":"Copilot CLI"},{"href":"/zh/copilot/how-tos/copilot-cli/set-up-copilot-cli","title":"设置 Copilot CLI"},{"href":"/zh/copilot/how-tos/copilot-cli/set-up-copilot-cli/troubleshoot-copilot-cli-auth","title":"排查 Copilot CLI 身份验证问题"}],"documentType":"article"},"body":"# 排查 GitHub Copilot CLI 身份验证问题\n\n登录 Copilot CLI时诊断身份验证失败问题。\n\n## 身份验证错误\n\n如果遇到身份验证错误，请使用下表确定原因和解决方法。\n\n| 問题                                                | 原因                          | 修复                       | 详细信息 |\n| ------------------------------------------------- | --------------------------- | ------------------------ | ---- |\n| 找不到身份验证信息                                         | 未存储任何凭据                     | 运行 `copilot login`       |      |\n| [找不到身份验证信息](#no-authentication-information-found) |                             |                          |      |\n| 401 未授权                                           | 令牌吊销或权限不足                   | 使用特定权限生成令牌               |      |\n| [令牌已过期或已吊销](#token-expired-or-revoked)            |                             |                          |      |\n| Token (classic) 拒绝                                |                             |                          |      |\n| Token (classic)（`ghp_`）                           | 使用细粒度 personal access token |                          |      |\n| \\[                                                |                             |                          |      |\n| Token (classic) 拒绝]\\(#token-classic-rejected)     |                             |                          |      |\n| 403 已禁止或策略被拒绝                                     |                             |                          |      |\n| Copilot 许可证或企业/组织策略                               | 检查订阅和组织配置                   |                          |      |\n| [Access被拒绝](#access-denied)                       |                             |                          |      |\n| 密钥链不可用                                            | 缺少系统密钥链                     | 安装 `libsecret` 或允许纯文本    |      |\n| [钥匙串访问失败](#keychain-access-failure)               |                             |                          |      |\n| 帐户错误                                              | 多个帐户或环境变量替代                 | 检查环境变量，使用 `/user switch` |      |\n| [帐户错误](#wrong-account)                            |                             |                          |      |\n\n## 找不到身份验证信息\n\nCopilot CLI 显示以下错误：\n\n<!-- markdownlint-disable GHD005 -->\n\n```text\nError: No authentication information found\nCopilot can be authenticated with GitHub using an OAuth Token or a Fine-Grained Personal Access Token\n```\n\n<!-- markdownlint-enable GHD005 -->\n\n### 原因\n\n在所有检查过的位置都没有发现凭据。\n\n### 修复\n\n使用以下步骤查找缺少身份验证的位置并恢复访问权限。\n\n#### 检查身份验证状态\n\n```bash copy\ngh auth status\n```\n\n如果看到一条消息，提示你未登录，请使用 `gh auth login` 登录或通过 `copilot login` 使用 OAuth 流。\n\n#### 检查是否已设置身份验证环境变量\n\n如果使用环境变量，请检查是否设置了环境变量`COPILOT_GITHUB_TOKEN``GH_TOKEN`或`GITHUB_TOKEN`环境变量：\n\n```bash copy\necho $COPILOT_GITHUB_TOKEN\n```\n\n如果命令不打印任何内容，则不会设置变量。 将变量设置为有效的令牌。 若要生成令牌，请参阅 [对 GitHub Copilot CLI 进行身份验证](/zh/copilot/how-tos/copilot-cli/set-up-copilot-cli/authenticate-copilot-cli#authenticating-with-environment-variables)。\n\n```bash copy\n export $COPILOT_GITHUB_TOKEN=PERSONAL_ACCESS_TOKEN\n```\n\n#### macOS 密钥链\n\n```bash copy\nsecurity find-generic-password -s copilot-cli\n```\n\n如果未找到任何项，请再次进行身份验证，或使用`/login` 或 `copilot login` 来创建一项。\n如果找到某个项，但身份验证仍然失败，请删除保存的凭据，然后再次进行身份验证， `/login` 或者 `copilot login`：\n\n```bash copy\n  security delete-generic-password -s copilot-cli\n```\n\n## 令牌已过期或已吊销\n\nCopilot CLI 显示以下错误：\n\n<!-- markdownlint-disable GHD005 -->\n\n```text\nError: Authentication failed\n\nYour GitHub token may be invalid, expired, or lacking the required permissions.\n\nTo resolve this, try the following:\n  • Start 'copilot' and run the '${LOGIN_COMMAND}' command to re-authenticate\n  • If using a Fine-Grained PAT, ensure it has the 'Copilot Requests' permission enabled\n  • If using COPILOT_GITHUB_TOKEN, GH_TOKEN or GITHUB_TOKEN environment variable, verify the token is valid and not expired\n  • Run 'gh auth status' to check your current authentication status\n```\n\n<!-- markdownlint-enable GHD005 -->\n\n### 原因\n\n令牌已被吊销、已过期或创建时未具备所需权限。\n\n### 修复\n\n查看 GitHub 上的令牌状态和权限。 该令牌必须是你的fine-grained personal access token（非组织帐户）拥有的 \\*\\*\\*\\*，且具有 **Copilot 请求**权限。 如有必要，请生成具有所需权限的新令牌。\n\n## Token (classic) 拒绝\n\n以无提示方式忽略开头 `ghp_` 的令牌，CLI 的行为就像未设置令牌一样。\n\n### 原因\n\n经典 personal access tokens 版不被 Copilot CLI 支持。\n\n### 修复\n\n生成包含所需范围的精细 personal access token。\n\n## 访问被拒绝\n\nCopilot CLI 显示以下错误之一：\n\n```text\nError: Access denied by policy settings\n\nYour Copilot CLI policy setting may be preventing access. This can happen when:\n  • Your organization has restricted Copilot access\n  • Your Copilot subscription does not include this feature\n  • Required policies have not been enabled by your administrator\n\nTo resolve this, visit your Copilot settings: \n```\n\n### 原因\n\n组织策略会阻止 GitHub Copilot CLI或用户帐户缺少 GitHub Copilot 许可证。\n\n### 修复\n\n* 检查你的帐户拥有有效的 GitHub Copilot 许可证。\n* 要求组织管理员在组织策略中启用 GitHub Copilot CLI 。\n\n## 密钥链访问失败\n\n登录期间，CLI 会提示你系统密钥链不可用，并询问是否以纯文本形式存储凭据。\n\n```text\nSystem keychain unavailable. Store token in plaintext config file? (y/N)\n```\n\n### 原因\n\n系统密钥链不可访问。 这可能会发生在没有 `libsecret` 无头服务器的 Linux 系统上，或发生在存在权限问题的系统上。\n\n### 修复\n\n按照操作系统对应的步骤恢复安全凭据存储。\n\n#### macOS 或 Windows\n\n在 macOS 上，确保“钥匙串访问”应用可用，并且你可以解锁你的登录钥匙串。\n在 Windows 上，确认凭据管理器可用，并确保可以访问 Windows 保管库。\n如果无法访问系统凭据管理器，请使用纯文本存储（根据提示）或使用环境变量令牌进行身份验证，然后重新运行 `/login` 或 `copilot login`。\n\n#### Linux\n\n在 Linux 上，使用系统密钥环或以纯文本形式存储凭据。\n\n1. 检查`secret-tool`是否已安装：\n\n   ```bash copy\n   command -v secret-tool\n   ```\n\n2. 如果未找到`secret-tool`，或者搜索命令不返回任何结果，请安装`libsecret`及其依赖项。 例如，在 Debian 和 Ubuntu 上，可以使用以下命令。\n\n   ```bash copy\n   sudo apt install libsecret-1-0 gnome-keyring seahorse\n   ```\n\n3. 安装 `secret-tool` 后，搜索密钥环以查找保存的凭据：\n\n   ```bash copy\n   secret-tool search copilot-cli\n   ```\n\n   如果命令返回一个或多个结果，则密钥器中存在凭据。 在终端中运行`copilot login`或在`/login`中再次运行Copilot CLI。\n\n## 帐户错误\n\n对错误的用户进行身份验证，或者令牌属于错误的组织。\n\n### 原因\n\n存储了多个帐户，或环境变量覆盖了已存储的令牌。\n\n### 修复\n\n若要切换帐户，请在 CLI 提示符处使用 `/user switch` ，或者注销 `/logout` 并使用正确的帐户运行 `/login` 。"}