Skip to main content

GitHub Copilot CLI 身份验证

对Copilot 命令行界面(CLI)进行身份验证,以便可以直接从命令行使用Copilot。

谁可以使用此功能?

GitHub Copilot 命令行界面 (CLI) 与所有 Copilot 计划兼容。 如果从组织收到 Copilot,则必须在组织的“Settings”中启用 Copilot 命令行界面(CLI) 策略。

关于身份验证

GitHub Copilot 命令行界面 (CLI) 支持三种身份验证方法。 使用的方法取决于是以交互方式工作,还是在自动化环境中工作。

  •         **OAuth 设备流**:这是交互式使用的默认方法,也是推荐的方法。 当在 Copilot 命令行界面(CLI) 中运行 `/login` 时,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 将记住上次使用的帐户。 令牌生存期和过期时间取决于如何在帐户或组织设置上创建令牌。

支持的令牌类型

令牌类型前缀已支持注释
OAuth 令牌(设备流)gho_是的默认方法通过copilot login
细粒度 PATgithub_pat_是的必须包含所需的权限 Copilot 请求
GitHub应用用户与服务器ghu_是的通过环境变量
经典 PATghp_Copilot 命令行界面(CLI) 不支持

Copilot CLI 如何存储凭据

默认情况下,CLI 会将 OAuth 令牌存储在操作系统的密钥链中,并使用服务名称 copilot-cli

平台密钥链
macOS钥匙串访问
Windows操作系统凭据管理器
Linuxlibsecret (GNOME Keyring, KWallet)

如果系统密钥链不可用(例如,在没有安装的无头 Linux 服务器上 libsecret ),CLI 会提示你将令牌存储在纯文本配置文件中 ~/.copilot/config.json

运行命令时,Copilot 命令行界面(CLI) 按以下顺序检查凭据:

  1.        `COPILOT_GITHUB_TOKEN` 环境变量
    
  2.        `GH_TOKEN` 环境变量
    
  3.        `GITHUB_TOKEN` 环境变量
    
  4. 来自系统密钥链的 OAuth 令牌
  5. GitHub CLI (gh auth token) 回退

注意

环境变量以无提示方式替代存储的 OAuth 令牌。 如果您为另一个工具设置了GH_TOKEN,CLI 将使用该令牌,而不是从copilot login获得的 OAuth 令牌。 为了避免意外行为,请取消设置那些不希望 CLI 使用的环境变量。

使用 OAuth 进行身份验证

OAuth 设备流是用于交互式使用的默认身份验证方法。 可以通过从 Copilot 命令行界面(CLI) 运行 /login 或从终端运行 copilot login 进行身份验证。

使用 /login 进行身份验证

  1. 从 Copilot 命令行界面(CLI),运行 /login

    Bash
    /login
    
  2. 选择要进行身份验证的帐户。 对于需要数据驻留的 GitHub Enterprise Cloud,请输入实例的主机名。

    What account do you want to log into?
     1. GitHub.com
     2. GitHub Enterprise Cloud with data residency (*.ghe.com)
    
  3. 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...
    
  4. 如果浏览器未自动打开,请导航到 https://github.com/login/device 的验证 URL。

  5. 将一次性代码粘贴到页面上的字段中。

  6. 如果组织使用 SAML SSO,请单击每个要授予访问权限的组织旁边的 Authorize

  7. 查看请求的权限,然后单击 Authorize GitHub Copilot CLI

  8. 返回到终端。 身份验证完成后,CLI 会显示一条成功消息。

    Signed in successfully as Octocat. You can now use Copilot.
    

使用 copilot login 进行身份验证

  1. 从终端运行 copilot login。 如果使用具有数据驻留的 GitHub Enterprise Cloud,请输入实例的主机名。

    Bash
    copilot login
    

    对于 GitHub Enterprise Cloud:

    Bash
    copilot login --host HOSTNAME
    

    CLI 显示一次性用户代码,并自动将其复制到剪贴板并打开浏览器。

    To authenticate, visit https://github.com/login/device and enter code 1234-5678.
    
  2. 如果浏览器未自动打开,请导航到 https://github.com/login/device 的验证 URL。

  3. 将一次性代码粘贴到页面上的字段中。

  4. 如果您的组织使用 SAML SSO,请单击每个您要授予访问权限的组织旁边的 Authorize

  5. 查看请求的权限,然后单击 Authorize GitHub Copilot CLI

  6. 返回到终端。 身份验证完成后,CLI 会显示一条成功消息。

    Signed in successfully as Octocat.
    

使用环境变量进行身份验证

对于非交互式环境,可以通过使用支持的令牌设置环境变量进行身份验证。 这非常适合 CI/CD 流水线、容器或无头服务器。

  1. 访问Fine-grained personal access tokens
  2. 在“权限”下,单击“ 添加权限 ”,然后选择 Copilot 请求
  3. 单击“生成令牌”。****
  4. 在终端或环境配置中导出令牌。 使用COPILOT_GITHUB_TOKENGH_TOKENGITHUB_TOKEN环境变量(按优先级顺序)。

使用 GitHub CLI 进行身份验证

如果已安装并验证了 GitHub CLI,则 Copilot 命令行界面(CLI) 可以将其令牌用作回退。 此方法的优先级最低,仅在未设置环境变量且未找到存储令牌时激活。

  1. 验证 GitHub CLI 是否已通过身份验证。

    Bash
    gh auth status
    

    如果将 GitHub Enterprise Cloud 与数据驻留一起使用,请验证是否对正确的主机名进行了身份验证。

    Bash
    gh auth status --hostname HOSTNAME
    
  2. 运行 copilot。 Copilot CLI 自动使用 GitHub CLI 令牌。

  3. 运行 /user 以验证 CLI 中经过身份验证的帐户。

在帐户之间切换

数据变量.copilot.copilot_cli_short %} 支持多个账户。 可以列出可用帐户,并从 CLI 中切换它们。 若要列出可用帐户,请在 Copilot 命令行界面(CLI) 提示符下运行 /user list。 若要切换到其他帐户,请在提示符上键入 /user switch

若要添加另一个帐户,请从新的终端会话运行 copilot login ,或者从 CLI 中运行登录命令,并使用其他帐户授权。

退出登录并删除凭据

若要注销,请在 Copilot 命令行界面(CLI) 提示符处键入 /logout。 这会删除本地存储的令牌,但不在 GitHub上撤消该令牌。

若要撤销 GitHub 上的 OAuth 应用授权,并阻止它在其他地方使用,请执行以下步骤。

  1. 导航到 “设置 > 应用程序 > 授权的 OAuth 应用”。
  2. 导航到设置页面:
    1. 在 GitHub 上任意页的右上角,单击你的个人资料图片。
    2. 单击“设置”。
  3. 在左侧栏中,单击“ 应用程序”。
  4. Authorized OAuth Apps 下,单击 GitHub CLI 旁的 展开菜单,然后选择 “Revoke”