身份验证错误
如果遇到身份验证错误,请使用下表识别原因并找到解决方案。
| 议题 | 原因 | 解决办法 | 更多信息 |
|---|---|---|---|
| 未找到身份验证信息 | 未存储凭证 | 运行 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
原因
在所有检查的位置中不存在凭证。
解决办法
使用以下步骤查找缺失的身份验证位置并恢复访问。
检查您的身份验证状态
gh auth status
gh auth status
如果看到提示表示您未登录,请使用 gh auth login 登录,或通过 copilot login 使用 OAuth 流程。
检查是否已设置身份验证环境变量
如果使用环境变量,请检查 COPILOT_GITHUB_TOKEN、GH_TOKEN 或 GITHUB_TOKEN 环境变量是否已设置
echo $COPILOT_GITHUB_TOKEN
echo $COPILOT_GITHUB_TOKEN
如果该命令没有输出,则变量未设置。将变量设置为有效的令牌。要生成令牌,请参阅 认证 GitHub Copilot CLI。
export $COPILOT_GITHUB_TOKEN=PERSONAL_ACCESS_TOKEN
export $COPILOT_GITHUB_TOKEN=PERSONAL_ACCESS_TOKEN
macOS 钥匙串
security find-generic-password -s copilot-cli
security find-generic-password -s copilot-cli
如果未找到项目,请使用 /login 或 copilot login 重新进行身份验证以创建。若找到项目但身份验证仍失败,请删除已保存的凭证,然后再次使用 /login 或 copilot login 进行身份验证。
security delete-generic-password -s copilot-cli
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 凭据库。若无法访问系统凭据管理器,请使用明文存储(如果出现提示),或使用环境变量令牌进行身份验证,然后重新运行 /login 或 copilot login。
Linux
在 Linux 上,使用系统密钥环或以明文存储凭证。
-
检查是否已安装
secret-toolBash command -v secret-tool
command -v secret-tool -
如果未找到
secret-tool,或搜索命令未返回结果,请安装libsecret及其依赖。例如,在 Debian、Ubuntu 上可使用以下命令。Bash sudo apt install libsecret-1-0 gnome-keyring seahorse
sudo apt install libsecret-1-0 gnome-keyring seahorse -
安装
secret-tool后,搜索密钥环以查找已保存的凭证Bash secret-tool search copilot-cli
secret-tool search copilot-cli如果该命令返回一个或多个结果,则凭证已存在于密钥环中。再次在终端运行
copilot login,或在 Copilot CLI 中运行/login。
错误的账户
认证了错误的用户,或令牌所属的组织错误。
原因
存储了多个账户,或环境变量覆盖了已存储的令牌。
解决办法
要切换账户,请在 CLI 提示符下使用 /user switch,或使用 /logout 注销后再使用正确的账户运行 /login。