# GitHub Copilot 的网络设置

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

GitHub Copilot 的网络设置允许您通过 HTTP 代理连接到 GitHub 并使用自定义证书。

## Copilot 的代理设置

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

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

> \[!NOTE] 您的代理服务器或防火墙的管理员还需要为 Copilot 配置网络设置，使其按预期运行。 请参阅 [Copilot 允许列表参考](/zh/copilot/reference/copilot-allowlist-reference)。

Copilot 支持基本的 HTTP 代理设置。 如果需要通过代理进行身份验证，Copilot 支持基本身份验证或 Kerberos 身份验证。 如果代理 URL 以 `https://` 开头，则当前不支持该代理。

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

* `HTTPS_PROXY`
* `https_proxy`
* `HTTP_PROXY`
* `http_proxy`

> \[!NOTE] 可以使用其中任何变量来存储标准 HTTP 代理的 URL。 在标准用法中，这些变量的 `http` 和 `https` 部分引用所发出的请求类型，而不是代理本身的 URL。
> Copilot 不遵循此约定，并将存储在优先级最高的变量中的 URL 用作 HTTP 和 HTTPS 请求的代理。

### 使用 Kerberos 进行身份验证

Kerberos 是一种身份验证协议，允许用户和服务相互证明身份。 当用户成功进行身份验证时，身份验证服务会向用户授予一个票证，该票证access服务一段时间。 网络管理员可能更喜欢 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` 替代 SPN for VS Code 和 JetBrains IDE。

## 自定义证书

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

Copilot 从操作系统的信任存储中读取证书。 它还从标准 Node.js 环境变量 `NODE_EXTRA_CA_CERTS` 指定的文件中读取额外的证书。 有关详细信息，请参阅 [Node.js 文档](https://nodejs.org/docs/latest-v18.x/api/cli.html#node_extra_ca_certsfile)。

Copilot 无论代理是否直接在用户的计算机上配置，都可以读取证书。 这允许 Copilot 支持透明代理或 Zscaler 等设置。

## 后续步骤

若要了解如何在编辑器中配置网络设置，请参阅 [为 GitHub Copilot 配置网络设置](/zh/copilot/how-tos/configure-personal-settings/configure-network-settings)。