注意:GitHub Copilot 目前无法与 Visual Studio for Mac 一起使用。
简介
默认情况下,GitHub Copilot 通过安全的 HTTPS 连接从您的环境直接连接到 GitHub 的服务器。您无需配置任何额外的网络设置即可使用 Copilot。
某些网络使用 HTTP 代理服务器来拦截互联网流量,然后再将其发送到其目标位置。公司通常使用 HTTP 代理来检测可疑流量或限制进入其网络的内容。如果您在公司网络上工作,则可能需要配置 Copilot 通过 HTTP 代理连接。
配置 GitHub Copilot 的代理设置
GitHub Copilot 支持基本的 HTTP 代理设置。如果您需要对代理进行身份验证,GitHub Copilot 支持基本身份验证或 Kerberos 身份验证。如果代理 URL 以 https://
开头,则目前不支持该代理。
您可以在所选编辑器中为 GitHub Copilot 配置 HTTP 代理。要查看编辑器的说明,请使用本文顶部的选项卡。
如果您没有直接在编辑器中配置代理,GitHub Copilot 会检查以下环境变量中是否设置了代理 URL,从最高到最低优先级列出。
HTTPS_PROXY
https_proxy
HTTP_PROXY
http_proxy
注意:您可以使用任何这些变量来存储标准 HTTP 代理的 URL。在标准用法中,这些变量的 http
和 https
部分指的是正在进行的请求类型,而不是代理本身的 URL。GitHub Copilot 不遵循此约定,并使用存储在优先级最高的变量中的 URL 作为 HTTP 和 HTTPS 请求的代理。
如果您已配置代理但仍然遇到连接错误,请参阅 "GitHub Copilot 网络错误排查."
在 JetBrains IDE 中配置代理
-
在 JetBrains IDE 中,单击文件菜单(Windows)或菜单栏中的应用程序名称(macOS),然后单击设置。
-
在外观和行为下,单击系统设置,然后单击HTTP 代理。
-
选择手动代理配置,然后选择HTTP。
-
在“主机名”字段中,输入代理服务器的主机名,在“端口号”字段中,输入代理服务器的端口号。
-
可选地,要配置 Copilot 忽略证书错误,在左侧边栏中,单击 **工具**,单击 **服务器证书**,然后选择或取消选择 **自动接受不受信任的证书**。
警告:忽略证书错误会导致安全问题,不建议这样做。
基本身份验证
GitHub Copilot for JetBrains 支持基本身份验证。要进行身份验证,您可以在“手动代理配置”页面上选择 **代理身份验证**,然后输入您的凭据。
这会将您的凭据以纯文本形式存储在您的编辑器设置中。或者,您可能更愿意将您的凭据包含在代理 URL 中(例如:http://USERNAME:[email protected]:5187/
),然后将此 URL 设置为“配置 GitHub Copilot 的代理设置”中列出的支持的环境变量之一。
在 Visual Studio Code 中配置代理
-
在 **文件** 菜单中,导航到 **首选项** 并单击 **设置**。
-
在设置选项卡的左侧面板中,单击 **应用程序**,然后选择 **代理**。
-
在“代理”下的文本框中,键入您的代理服务器地址,例如
https://127.0.0.1:3128
。 -
可选地,要配置 Copilot 忽略证书错误,在“代理严格 SSL”下,选择或取消选择复选框。
警告:忽略证书错误会导致安全问题,不建议这样做。
基本身份验证
GitHub Copilot for VS Code 支持基本身份验证。要进行身份验证,您可以在代理 URL 中包含您的凭据,例如:http://USERNAME:[email protected]:5187/
。您可以将此 URL 存储在您的 VS Code 设置中或“配置 GitHub Copilot 的代理设置”中列出的环境变量之一中。
在 Visual Studio 中配置代理
GitHub Copilot for Visual Studio 从 Windows 读取代理设置。有关在 Windows 上配置代理设置的信息,请参阅 Microsoft 文档中“在 Windows 中使用代理服务器”下的“手动设置代理服务器连接”说明。
基本身份验证
Visual Studio 版 GitHub Copilot 不会从 Windows 设置中检索身份验证凭据。如果您需要对代理进行身份验证,您可以将您的凭据包含在代理 URL 中(例如:http://USERNAME:[email protected]: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
-
通过按 Shift+Command+P (Mac) / Ctrl+Shift+P (Windows/Linux) 打开 VS Code 命令面板。
-
键入
settings
,然后点击首选项:打开用户设置 (JSON)。 -
在 JSON 对象中,添加以下顶级属性,将
YOUR-SPN
替换为您的代理服务的正确 SPN。JSON "http.proxyKerberosServicePrincipal": "YOUR-SPN",
"http.proxyKerberosServicePrincipal": "YOUR-SPN",
覆盖 JetBrains IDE 中的默认 SPN
- 在 JetBrains IDE 中,单击文件菜单(Windows)或菜单栏中的应用程序名称(macOS),然后单击设置。
- 在左侧边栏中,点击 **语言和框架**,然后点击 **GitHub Copilot**。
- 在“高级”部分的“覆盖 Kerberos 代理服务主体名称”字段中,输入代理服务的 SPN。
允许 GitHub Copilot 使用自定义证书
Copilot 可以读取用户机器上安装的自定义 SSL 证书。这允许代理服务器被识别为 Copilot 安全连接的预期接收方,以便可以检查网络流量。如果没有自定义证书,可以使用 HTTP 代理来监控、路由和终止 Copilot 的连接,但不能检查流量内容。
Copilot 从操作系统的信任存储中读取证书。它还会从由标准 Node.js 环境变量 NODE_EXTRA_CA_CERTS
指定的文件中读取额外的证书。有关更多信息,请参阅 Node.js 文档。
无论用户机器上是否直接配置了代理,Copilot 都可以读取证书。这允许 Copilot 支持透明代理或 Zscaler 等设置。
安装自定义证书
通常,如果您使用的是公司设备,您的公司 IT 部门应该已经在您的机器上安装了所有必需的证书。如果您需要安装证书,请参阅以下说明。
警告:安装自定义证书是指示您的计算机信任证书创建者,这可能会允许创建者拦截来自您机器的所有互联网流量。您应该非常小心地验证您是否正在安装正确的证书。
- 对于 Windows,请参阅 Microsoft 文档中的 安装受信任的根证书。
- 对于 macOS,请参阅 Keychain Access 用户指南中的 使用 Mac 上的 Keychain Access 将证书添加到钥匙串。
- 对于 Linux,请参阅 Ubuntu 文档中的 在信任存储中安装根 CA 证书。类似的说明应该适用于大多数 Linux 发行版。
如果您已安装证书但 Copilot 未检测到它,请参阅“GitHub Copilot 网络错误排查”。