GitHub Copilot 的网络设置允许您通过 HTTP 代理连接到 GitHub 并使用自定义证书。
Copilot 代理设置
默认情况下,Copilot 通过安全的 HTTPS 连接直接从您的环境连接到 GitHub 服务器。使用 Copilot 并不一定需要配置额外的网络设置。
某些网络使用 HTTP 代理服务器在将流量发送到目标位置之前拦截互联网流量。公司通常使用 HTTP 代理来检测可疑流量或限制进入其网络的内容。如果您在企业网络工作,可能需要将 Copilot 配置为通过 HTTP 代理进行连接。
注意
您的代理服务器或防火墙管理员也需要为 Copilot 配置网络设置,以使其正常工作。请参阅 Copilot 白名单参考。
Copilot 支持基本的 HTTP 代理设置。如果需要对代理进行身份验证,Copilot 支持基本身份验证或 Kerberos 身份验证。如果代理 URL 以 https:// 开头,则当前不支持该代理。
如果您没有在编辑器中直接配置代理,Copilot 会检查以下环境变量中是否设置了代理 URL,优先级从高到低依次列出。
HTTPS_PROXYhttps_proxyHTTP_PROXYhttp_proxy
注意
您可以使用这些变量中的任意一个来存储标准 HTTP 代理的 URL。在常规用法中,这些变量的 http 和 https 部分指的是请求的类型,而不是代理本身的 URL。Copilot 并未遵循此约定,而是使用优先级最高的变量中存储的 URL 作为 HTTP 和 HTTPS 请求的代理。
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 为 VS Code 和 JetBrains IDE 覆盖 SPN。
自定义证书
Copilot 可以读取用户机器上安装的自定义 SSL 证书。这使得代理服务器能够被识别为 Copilot 安全连接的预期接收方,从而可以检查网络流量。若没有自定义证书,HTTP 代理仍可用于监控、路由和终止 Copilot 的连接,但无法检查流量内容。
Copilot 从操作系统的受信任存储中读取证书。它还会读取由标准 Node.js 环境变量 NODE_EXTRA_CA_CERTS 指定的文件中的额外证书。更多信息请参阅 Node.js 文档。
无论是否在用户机器上直接配置了代理,Copilot 都能读取证书。这使得 Copilot 支持透明代理或 Zscaler 等设置。
后续步骤
了解如何在编辑器中配置网络设置,请参阅 GitHub Copilot 网络设置配置。