关于身份验证
如果使用自己的 LLM 提供程序 API 密钥(BYOK), GitHub 则不需要身份验证。
任何其他 GitHub Copilot CLI 用法都需要身份验证。
需要身份验证时, Copilot CLI 支持三种方法。 使用的方法取决于是以交互方式工作,还是在自动化环境中工作。
-
**OAuth 设备流**:这是交互式使用的默认方法,也是推荐的方法。 在`/login`中运行Copilot CLI时,CLI 会生成一次性代码,并指示你在浏览器中进行身份验证。 这是进行身份验证的最简单方法。 -
**环境变量**:建议用于 CI/CD 流水线、容器和非交互式环境。 将受支持的令牌设置为环境变量(`COPILOT_GITHUB_TOKEN`或`GH_TOKEN``GITHUB_TOKEN`),CLI 会自动使用它而不提示。 -
** GitHub CLI 回退**:如果 GitHub CLI (`gh`)(注意:是 `gh` CLI,而不是 `copilot`)已安装并经过身份验证,Copilot CLI 可以自动使用其令牌。 这是最低优先级的方法,仅在未找到其他凭据时激活。
进行身份验证后,Copilot CLI 会记住您的登录信息,并自动为所有 Copilot API 请求使用令牌。 可以使用多个帐户登录,CLI 将记住上次使用的帐户。 令牌生存期和过期时间取决于如何在帐户或组织设置上创建令牌。
未经身份验证的使用
如果配置为 Copilot CLI 使用自己的 LLM 提供程序 API 密钥(BYOK), GitHub则不需要身份验证。 Copilot CLI 可以在不需要 GitHub 帐户或令牌的情况下直接连接到您配置的提供程序。
但是,如果没有 GitHub 身份验证,则 以下功能不可用:
-
`/delegate`:需要 Copilot云代理,在 GitHub的服务器上运行 -
GitHub MCP 服务器:需要身份验证才能访问 GitHub API -
GitHub 代码搜索:需要身份验证才能查询 GitHub的搜索索引
可以将 BYOK 和 GitHub 身份验证相结合,以充分利用两者的优势:AI 响应的首选模型,以及访问 GitHub 托管的功能(如 /delegate 和代码搜索)。
脱机模式
如果将环境变量COPILOT_OFFLINE设置为true,Copilot CLI则运行而不联系GitHub的服务器。 在脱机模式下:
- 没有尝试进行GitHub 身份验证。
- CLI 仅向配置的 BYOK 提供程序发出网络请求。
- 遥测已完全禁用。
只有在你的 BYOK 提供程序位于本地或位于同一隔离环境内(例如,在没有外部网络访问的本地运行的模型)时,离线模式才是实体隔离的。 如果 COPILOT_PROVIDER_BASE_URL 指向远程或 Internet 可访问的终结点,则仍会通过网络将提示和代码上下文发送到该提供程序。 如果没有脱机模式,即使在不使用 GitHub 身份验证的情况下使用 BYOK,遥测仍会正常发送。
支持的令牌类型
| 令牌类型 | 前缀 | 已支持 | 注释 |
|---|---|---|---|
| OAuth 令牌(设备流) | gho_ | 是的 | 默认方法通过copilot login |
| 细粒度 PAT | github_pat_ | 是的 | 必须包含所需的权限 Copilot Requests |
| GitHub应用用户与服务器之间 | ghu_ | 是的 | 通过环境变量 |
| 经典 PAT | ghp_ | 否 | 不支持 Copilot CLI |
COPILOT CLI 如何存储凭据
默认情况下,CLI 会将 OAuth 令牌存储在操作系统的密钥链中,并使用服务名称 copilot-cli。
| 平台 | 密钥链 |
|---|---|
| macOS | 钥匙串访问 |
| Windows | 凭据管理器 |
| Linux | libsecret (GNOME Keyring, KWallet) |
如果系统密钥链不可用(例如,在没有安装的无头 Linux 服务器上 libsecret ),CLI 会提示你将令牌存储在纯文本配置文件中 ~/.copilot/config.json。
运行命令时, Copilot CLI 按以下顺序检查凭据:
-
`COPILOT_GITHUB_TOKEN` 环境变量 -
`GH_TOKEN` 环境变量 -
`GITHUB_TOKEN` 环境变量 - 来自系统密钥链的 OAuth 令牌
- GitHub CLI (
gh auth token) 回退
注意
- 环境变量以无提示方式替代存储的 OAuth 令牌。 如果您为另一个工具设置了
GH_TOKEN,CLI 将使用该令牌,而不是从copilot login获得的 OAuth 令牌。 为了避免意外行为,请取消设置那些不希望 CLI 使用的环境变量。 - 配置 BYOK 提供程序环境变量时(例如,
COPILOT_PROVIDER_BASE_URL,COPILOT_PROVIDER_API_KEY),无论您的身份验证状态如何,Copilot CLI 都将这些变量用于 AI 模型请求。 仅 GitHub 托管功能需要 GitHub 令牌。
使用 OAuth 进行身份验证
OAuth 设备流是用于交互式使用的默认身份验证方法。 可以通过从/login运行Copilot CLI或者从终端运行copilot login来进行身份验证。
使用 /login 进行身份验证
-
从 Copilot CLI中运行
/login。Bash /login
/login -
选择要进行身份验证的帐户。 对于实现数据驻留的 GitHub Enterprise Cloud,请输入你的实例的主机名。
What account do you want to log into? 1. GitHub.com 2. GitHub Enterprise Cloud with data residency (*.ghe.com) -
CLI 显示一次性用户代码,并自动将其复制到剪贴板并打开浏览器。
Waiting for authorization... Enter one-time code: 1234-5678 at https://github.com/login/device Press any key to copy to clipboard and open browser... -
如果浏览器未自动打开,请导航到
https://github.com/login/device的验证 URL。 -
将一次性代码粘贴到页面上的字段中。
-
如果组织使用 SAML SSO,请单击每个要授予访问权限的组织旁边的 Authorize。
-
查看请求的权限,然后单击 Authorize GitHub Copilot CLI。
-
返回到终端。 身份验证完成后,CLI 会显示一条成功消息。
Signed in successfully as Octocat. You can now use Copilot.
使用 copilot login 进行身份验证
-
从终端运行
copilot login。 如果你使用的是实现数据驻留的 GitHub Enterprise Cloud,请传递实例的主机名。Bash copilot login
copilot login对于 GitHub Enterprise Cloud:
Bash copilot login --host HOSTNAME
copilot login --host HOSTNAMECLI 显示一次性用户代码,并自动将其复制到剪贴板并打开浏览器。
To authenticate, visit https://github.com/login/device and enter code 1234-5678. -
如果浏览器未自动打开,请导航到
https://github.com/login/device的验证 URL。 -
将一次性代码粘贴到页面上的字段中。
-
如果组织使用 SAML SSO,请单击每个要授予访问权限的组织旁边的 Authorize。
-
查看请求的权限,然后单击 Authorize GitHub Copilot CLI。
-
返回到终端。 身份验证完成后,CLI 会显示一条成功消息。
Signed in successfully as Octocat.
使用环境变量进行身份验证
对于非交互式环境,可以通过使用支持的令牌设置环境变量进行身份验证。 这非常适合 CI/CD 流水线、容器或无头服务器。
- 访问 Fine-grained personal access tokens。
- 在“权限”下,单击“ 添加权限 ”,然后选择“ Copilot 请求”。
- 单击“生成令牌”。****
- 在终端或环境配置中导出令牌。 使用
COPILOT_GITHUB_TOKEN、GH_TOKEN或GITHUB_TOKEN环境变量(按优先级顺序)。
使用 GitHub CLI 进行身份验证
如果安装了 GitHub CLI 并完成身份验证,Copilot CLI 可以将其令牌作为备用。 此方法的优先级最低,仅在未设置环境变量且未找到存储令牌时激活。
-
验证 GitHub CLI 是否已认证。
Bash gh auth status
gh auth status如果使用 GitHub Enterprise Cloud 的数据驻留功能,请验证正确的主机名是否经过身份验证。
Bash gh auth status --hostname HOSTNAME
gh auth status --hostname HOSTNAME -
运行
copilot。 Copilot CLI 自动使用 GitHub CLI 令牌。 -
运行
/user以验证 CLI 中经过身份验证的帐户。
在帐户之间切换
Copilot CLI 支持多个帐户。 可以列出可用帐户,并从 CLI 中切换它们。 要列出可用帐户,请在 Copilot CLI 提示符下运行 `/user list`。 若要切换到其他帐户,请在提示符上键入 `/user switch` 。
若要添加另一个帐户,请从新的终端会话运行 copilot login ,或者从 CLI 中运行登录命令,并使用其他帐户授权。
退出登录并删除凭据
若要注销,请在/logout提示符处键入Copilot CLI。 这会删除本地存储的令牌,但不会在GitHub上撤销它。
若要撤消 OAuth 应用授权 GitHub 并将其阻止在其他位置使用,请执行以下步骤。
- 导航到 “设置 > 应用程序 > 授权的 OAuth 应用”。
- 导航到设置页面:
- 在任何页面 GitHub的右上角,单击个人资料图片。
- 单击“设置”。
- 在左侧栏中,单击“ 应用程序”。
- 在
Authorized OAuth Apps 下,单击GitHub CLI</c2 旁边的 >,展开菜单并选择 Revoke 。