跳至主要内容

排除 GitHub Copilot CLI 身份验证问题

诊断在登录 Copilot CLI 时的身份验证失败。

身份验证错误

如果遇到身份验证错误,请使用下表识别原因并找到解决方案。

议题原因解决办法更多信息
未找到身份验证信息未存储凭证运行 copilot login未找到身份验证信息
401 Unauthorized令牌被撤销或权限不足生成具有所需权限的令牌令牌已过期或被撤销
(经典)令牌被拒绝令牌(经典) (ghp_)使用细粒度个人访问令牌(经典)令牌被拒绝
403 禁止或策略拒绝Copilot 许可证或企业/组织策略检查订阅和组织设置访问被拒绝
钥匙串不可用系统钥匙串缺失安装 libsecret 或接受明文存储钥匙串访问失败
错误的账户多个账户或环境变量覆盖检查环境变量,使用 /user switch错误的账户

未找到身份验证信息

Copilot CLI 显示以下错误

Error: No authentication information found
Copilot can be authenticated with GitHub using an OAuth Token or a Fine-Grained Personal Access Token

原因

在所有检查的位置中不存在凭证。

解决办法

使用以下步骤查找缺失的身份验证位置并恢复访问。

检查您的身份验证状态

Bash
gh auth status

如果看到提示表示您未登录,请使用 gh auth login 登录,或通过 copilot login 使用 OAuth 流程。

检查是否已设置身份验证环境变量

如果使用环境变量,请检查 COPILOT_GITHUB_TOKENGH_TOKENGITHUB_TOKEN 环境变量是否已设置

Bash
echo $COPILOT_GITHUB_TOKEN

如果该命令没有输出,则变量未设置。将变量设置为有效的令牌。要生成令牌,请参阅 认证 GitHub Copilot CLI

Bash
 export $COPILOT_GITHUB_TOKEN=PERSONAL_ACCESS_TOKEN

macOS 钥匙串

Bash
security find-generic-password -s copilot-cli

如果未找到项目,请使用 /logincopilot login 重新进行身份验证以创建。若找到项目但身份验证仍失败,请删除已保存的凭证,然后再次使用 /logincopilot login 进行身份验证。

Bash
  security delete-generic-password -s copilot-cli

令牌已过期或被撤销

Copilot CLI 显示以下错误

Error: Authentication failed

Your GitHub token may be invalid, expired, or lacking the required permissions.

To resolve this, try the following:
  • Start 'copilot' and run the '${LOGIN_COMMAND}' command to re-authenticate
  • If using a Fine-Grained PAT, ensure it has the 'Copilot Requests' permission enabled
  • If using COPILOT_GITHUB_TOKEN, GH_TOKEN or GITHUB_TOKEN environment variable, verify the token is valid and not expired
  • Run 'gh auth status' to check your current authentication status

原因

该令牌已被撤销、已过期,或在创建时未授予所需权限。

解决办法

在 GitHub 上检查令牌的状态和权限。该令牌必须拥有 Copilot Requests 权限。如有必要,生成具有所需权限的新令牌。

(经典)令牌被拒绝

ghp_ 开头的令牌会被静默忽略,CLI 的行为相当于未设置令牌。

原因

Copilot CLI 不支持经典个人访问令牌。

解决办法

生成具有所需范围的细粒度个人访问令牌。

访问被拒绝

Copilot CLI 显示以下错误之一

Error: Access denied by policy settings

Your Copilot CLI policy setting may be preventing access. This can happen when:
  • Your organization has restricted Copilot access
  • Your Copilot subscription does not include this feature
  • Required policies have not been enabled by your administrator

To resolve this, visit your Copilot settings: 

原因

组织策略阻止 GitHub Copilot CLI,或用户账户缺少 GitHub Copilot 许可证。

解决办法

  • 检查您的账户是否拥有有效的 GitHub Copilot 许可证。
  • 请组织管理员在组织策略中启用 GitHub Copilot CLI。

钥匙串访问失败

登录时,CLI 会提示系统钥匙串不可用,并询问是否以明文存储凭证。

System keychain unavailable. Store token in plaintext config file? (y/N)

原因

系统钥匙串不可访问。这可能发生在没有 libsecret 的 Linux 系统、无头服务器或存在权限问题的系统上。

解决办法

按照您的操作系统的步骤恢复安全凭证存储。

macOS 或 Windows

在 macOS 上,确认钥匙串访问应用可用,并且您可以解锁登录钥匙串。 在 Windows 上,确认凭据管理器可用,并且您可以访问 Windows 凭据库。若无法访问系统凭据管理器,请使用明文存储(如果出现提示),或使用环境变量令牌进行身份验证,然后重新运行 /logincopilot login

Linux

在 Linux 上,使用系统密钥环或以明文存储凭证。

  1. 检查是否已安装 secret-tool

    Bash
    command -v secret-tool
    
  2. 如果未找到 secret-tool,或搜索命令未返回结果,请安装 libsecret 及其依赖。例如,在 Debian、Ubuntu 上可使用以下命令。

    Bash
    sudo apt install libsecret-1-0 gnome-keyring seahorse
    
  3. 安装 secret-tool 后,搜索密钥环以查找已保存的凭证

    Bash
    secret-tool search copilot-cli
    

    如果该命令返回一个或多个结果,则凭证已存在于密钥环中。再次在终端运行 copilot login,或在 Copilot CLI 中运行 /login

错误的账户

认证了错误的用户,或令牌所属的组织错误。

原因

存储了多个账户,或环境变量覆盖了已存储的令牌。

解决办法

要切换账户,请在 CLI 提示符下使用 /user switch,或使用 /logout 注销后再使用正确的账户运行 /login

© . This site is unofficial and not affiliated with GitHub, Inc.