Skip to main content

为 GitHub Copilot 配置网络设置

你可以通过 HTTP 代理连接到 Copilot 并使用自定义证书。

谁可以使用此功能?

GitHub Copilot Individual 或 GitHub Copilot Business。

Note

GitHub Copilot 当前无法与 Visual Studio for Mac 结合使用。

简介

默认情况下,GitHub Copilot 通过安全的 HTTPS 连接直接从环境连接到 GitHub 的服务器。 你不一定需要配置任何其他网络设置才能使用 Copilot。

某些网络使用 HTTP 代理服务器在将 Internet 流量发送到预期位置之前截获 Internet 流量。 公司通常使用 HTTP 代理检测可疑流量或限制进入其网络的内容。 如果使用的是公司网络,你可能需要将 Copilot 配置为通过 HTTP 代理进行连接。

Note

代理服务器或防火墙的管理员还需要配置 Copilot 的网络设置才能按预期工作。 请参阅“为 Copilot 配置代理服务器或防火墙”。

配置 GitHub Copilot 的代理设置

GitHub Copilot 支持基本 HTTP 代理设置。 如果你需要向代理进行身份验证,GitHub Copilot 支持使用 Kerberos 进行基本身份验证或身份验证。 如果代理 URL 启动 https://,则表示当前不支持代理。

你可以在所选编辑器中为 GitHub Copilot 配置 HTTP 代理。 要查看编辑器的说明,请使用本文顶部的选项卡。

如果你未直接在编辑器中配置代理,GitHub Copilot 将检查代理 URL 是否在以下任一环境变量中设置,这些环境变量从最高优先级到最低优先级列出。

  • HTTPS_PROXY
  • https_proxy
  • HTTP_PROXY
  • http_proxy

Note

可以使用其中任何变量来存储标准 HTTP 代理的 URL。 在标准用法中,这些变量的 httphttps 部分引用所发出的请求类型,而不是代理本身的 URL。 GitHub Copilot 不遵循此约定,并将存储在优先级最高的变量中的 URL 用作 HTTP 与 HTTPS 请求的代理。

如果你已配置代理,但仍遇到连接错误,请参阅“排查 GitHub Copilot 网络错误”。

在 JetBrains IDE 中配置代理

  1. 在 JetBrains IDE 中,单击“文件”**** 菜单 (Windows) 或菜单栏中的应用程序名称 (macOS),然后单击“设置”****。

  2. 在“外观与行为”下,单击“系统设置”,然后单击“HTTP 代理” 。

  3. 依次选择“手动代理配置”和“HTTP”。

  4. 在“主机名”字段中,输入代理服务器的主机名,并在“端口号”字段中输入代理服务器的端口号。

  5. (可选)要将 Copilot 配置为忽略证书错误,请在左侧边栏中单击“工具”,单击“服务器证书”,然后选择或取消选择“自动接受不受信任的证书”****。

    Warning

    忽略证书错误可能会导致安全问题,因此不建议这样做。

基本身份验证

JetBrains 的 GitHub Copilot 支持基本身份验证。 要进行身份验证,你可以在“手动代理配置”页面上选择“代理身份验证”****,然后输入你的凭据。

这会将你的凭据以纯文本形式存储在编辑器的设置中。 或者,你可能希望将凭据包含在代理 URL(例如:http://USERNAME:PASSWORD@10.203.0.1:5187/)中,然后将此 URL 设置为配置 GitHub Copilot 的代理设置中列出的其中一个受支持的环境变量。

在 GitHub Copilot 中配置代理

  1. 在“文件”菜单中,导航到“首选项”,然后单击“设置” 。

    Visual Studio Code 设置的屏幕截图。

  2. 在“设置”选项卡的左侧面板中,单击“应用程序”,然后选择“代理” 。

  3. 在“代理”下的文本框中,键入代理服务器的地址,例如 http://localhost:3128

  4. (可选)要将 Copilot 配置为忽略证书错误,请在“代理严格 SSL”下选中或取消选中此复选框。

    Warning

    忽略证书错误可能会导致安全问题,因此不建议这样做。

基本身份验证

VS Code 的 GitHub Copilot 支持基本身份验证。 要进行身份验证,你可以将凭据包含在代理 URL 中,例如:http://USERNAME:PASSWORD@10.203.0.1:5187/。 你可以将此 URL 存储在 VS Code 设置或配置 GitHub Copilot 的代理设置中列出的其中一个环境变量。

在 Visual Studio 中配置代理

Visual Studio 的 GitHub Copilot 从 Windows 读取代理设置。 有关在 Windows 上配置代理设置的信息,请参阅 Microsoft 文档的“在 Windows 中使用代理服务器”中的“手动设置代理服务器连接”下的说明。

基本身份验证

Visual Studio 的 GitHub Copilot 不会从 Windows 设置中检索身份验证凭据。 如果需要向代理进行身份验证,你可以将凭据包含在代理 URL(例如:http://USERNAME:PASSWORD@10.203.0.1:5187/)中,然后将此 URL 设置为配置 GitHub Copilot 的代理设置中列出的其中一个受支持的环境变量。

使用 Kerberos 进行身份验证

Kerberos 是一种身份验证协议,允许用户和服务相互证明身份。 在用户成功进行身份验证时,身份验证服务会向用户授予一个票证,该票证允许他们在一段时间内访问服务。 网络管理员可能更喜欢 Kerberos 进行基本身份验证,因为它更安全,且不需要发送未加密的凭据。

GitHub Copilot 支持使用 Kerberos 对代理进行身份验证。 要使用 Kerberos,你必须在计算机上安装适合你的操作系统的 krb5 库,以及代理服务的活动票证(使用 kinit 命令手动创建或由其他应用程序创建)。 你可以使用 klist 命令检查你是否具有代理服务的票证。

Kerberos 使用服务主体名称 (SPN) 来唯一标识服务实例。 默认情况下,SPN 派生自代理 URL。 例如,如果代理 URL 为 http://proxy.example.com:3128,则 SPN 为 HTTP/proxy.example.com

如果默认 SPN 对于你的代理不正确,你可以在 VS Code 和 JetBrains IDE 中替代 SPN。 当前无法替代 Visual Studio 中的默认 SPN。 但是,可以使用环境变量 AGENT_KERBEROS_SERVICE_PRINCIPAL 来替代 Visual Studio 和 JetBrains IDE 的 SPN。

在 VS Code 中替代默认 SPN

  1. Shift+Command+P (Mac)/Ctrl+Shift+P (Windows/Linux) 来打开 VS Code Command Palette。

  2. 键入 settings,然后单击“首选项:打开用户设置 (JSON)”****。

  3. 在 JSON 对象中,添加以下顶级属性,以将 YOUR-SPN 替换为你的代理服务的正确 SPN。

    JSON
    "http.proxyKerberosServicePrincipal": "YOUR-SPN",
    

替代 JetBrains IDE 中的默认 SPN

  1. 在 JetBrains IDE 中,单击“文件”**** 菜单 (Windows) 或菜单栏中的应用程序名称 (macOS),然后单击“设置”****。
  2. 在左侧边栏中,单击“语言和框架”,然后单击“GitHub Copilot”
  3. 在“高级”部分的“替代 Kerberos 代理服务主体名称”字段中,键入你的代理服务的 SPN。

允许 GitHub Copilot 使用自定义证书

Copilot 可以读取用户计算机上安装的自定义 SSL 证书。。 这允许将代理服务器标识为 Copilot 的安全连接的预期接收者,以便可以检查网络流量。 如果没有自定义证书,可以使用 HTTP 代理可监视、路由和终止 Copilot 的连接,但不能检查流量的内容。

Copilot 会从操作系统的信任存储中读取证书。 它还从标准 Node.js 环境变量 NODE_EXTRA_CA_CERTS 指定的文件中读取额外的证书。 有关详细信息,请参阅 Node.js 文档

Copilot 可以读取证书,而不考虑是否直接在用户的计算机上配置代理。 这将使 Copilot 能够支持透明代理或 Zscaler 等设置。

安装自定义证书

通常,如果你使用的是公司设备,公司的 IT 部门应已在计算机上安装任何必需的证书。 如果你需要安装证书,请参阅以下说明。

Warning

安装自定义证书就是指示计算机信任证书创建者,这可能会导致创建者截获来自你的计算机的所有互联网流量。 应非常小心地验证你是否安装正确的证书。

如果已安装证书,但 Copilot 未检测到,请参阅“排查 GitHub Copilot 网络错误”。