Cursor 支持私有網絡連接,滿足企業版團隊讓 Cursor 與無法從公共互聯網訪問的系統協同工作的需求。這些系統包括自託管 GitHub Enterprise Server、GitLab Enterprise、Bitbucket Data Center、Artifactory、Nexus、私有源代碼控制 API,以及這些系統回傳至 Cursor 的 webhook 流量。
所有需要訪問您的源代碼控制系統的 Cursor 服務都使用相同的私有網絡連接設置,包括 雲端代理、Bugbot 和 Cursor 後端服務。
如需設置私有網絡連接,請聯繫 hi@cursor.com 或您的 Cursor 銷售代表。
支持的選項¶
| 選項 | 最適合用於 | 雲服務提供商 | 狀態 |
|---|---|---|---|
| AWS PrivateLink | 在 Cursor 與您的 Git 提供商或軟件包註冊表之間建立私有網絡連接,包括返回 Cursor 的 webhook 流量 | AWS | 支持 |
| Cloudflare Tunnel | 當 AWS PrivateLink 不適用時,讓 Cursor 訪問私有源站 | 可運行 cloudflared 的任何環境 |
支持 |
如何選擇¶
如果您的私有 Git 提供商或軟件包註冊表位於 AWS 中,或可部署在 AWS 網絡負載均衡器之後,請使用 AWS PrivateLink。這是自託管 GitHub Enterprise Server 和 GitLab Enterprise 的首選方案。
AWS PrivateLink 可覆蓋兩個方向的流量:
- Cursor 訪問您的私有 Git 提供商,以克隆倉庫並調用 Git API。
- 您的 Git 提供商通過
api2.cursor.sh向 Cursor 發送 Webhook 或回調,無需經由公共互聯網出站。
如果無法發佈 AWS 端點服務,或需要僅從您的網絡建立出站隧道的部署模式,請使用 Cloudflare Tunnel。
如果您的團隊需要 Google Private Service Connect (PSC),請聯繫 Cursor。Cursor 目前不提供面向客戶的 PSC 服務。
前提條件¶
開始前,請確保您具備:
- Cursor 企業版工作區
- 可通過 HTTPS 的 443 端口訪問的自託管 GitHub Enterprise Server、GitLab Enterprise、Bitbucket Data Center 或私有軟件包註冊表 (如 Artifactory 或 Nexus)
- Git 或註冊表主機名的公信 TLS 證書
- 該主機名的 DNS 所有權
- 如果使用 AWS PrivateLink,具備創建端點服務或接口 VPC 端點的 AWS 權限
- 如果使用 Cloudflare Tunnel,具備運行
cloudflared的權限
Cursor 不支持在這些私有網絡連接路徑中使用自簽名證書、未加密連接、SSH、自定義端口或僅支持 IPv6 的端點服務。
如果在 GitHub Enterprise Server 前部署了代理,請確保該代理允許 Cursor 的 GitHub App 集成使用經身份驗證的 GitHub REST 和 GraphQL API。
AWS PrivateLink¶
AWS PrivateLink 支持在 Cursor 與您的 Git 提供商或軟件包註冊表之間雙向傳輸私有流量。具體需要單向還是雙向連接,取決於您的網絡策略。
方向 1:從 Cursor 到你的 Git 提供商或軟件包註冊表¶
當 Cursor 需要克隆倉庫、調用 Git API 或訪問 Artifactory 或 Nexus 等私有軟件包註冊表時,請選擇此選項。
1. 創建 AWS 端點服務¶
在 Git 提供商或軟件包註冊表的 HTTPS 端點前配置網絡負載均衡器。將該負載均衡器發佈爲 AWS VPC 端點服務。
向 Cursor 提供以下信息:
- 端點服務名稱,例如
com.amazonaws.vpce.us-east-1.vpce-svc-0123456789abcdef0 - AWS 區域
- Git 或註冊表主機名,例如
github.example.com或artifactory.example.com - 端點服務是否啓用了 AWS 託管私有 DNS
- 網絡負載均衡器是否保留客戶端 IP,或後端是否按源 IP 進行篩選
如果端點服務不在 us-east-1,請在該端點服務上啓用跨區域訪問。
2. 授權 Cursor 的 AWS 主體¶
Cursor 會提供需要添加到端點服務“允許的主體”列表中的 AWS 主體。請添加 Cursor 提供的確切主體:
arn:aws:iam::<cursor-aws-account-id>:role/<cursor-provided-role>
在允許此主體訪問前,Cursor 無法創建接口端點。如果該主體缺失或不完全匹配,AWS 會返回 InvalidServiceName。
如果您的負載均衡器保留客戶端 IP,或後端會篩選源 IP,請允許以下 Cursor PrivateLink 子網 CIDR:
10.2.8.0/21
10.2.24.0/21
10.2.40.0/21
3. 接受端點連接¶
Cursor 創建接口端點後,如果端點服務需要手動接受,請在您的 AWS 賬戶中接受該端點連接。
4. 配置 DNS¶
如果端點服務爲 Git 或註冊表主機名提供 AWS 託管的私有 DNS,Cursor 會在其接口端點上啓用私有 DNS。
如果端點服務不提供私有 DNS,Cursor 會自行創建私有 DNS,並將該主機名映射到端點 DNS 名稱。
在 Cursor 中使用與 TLS 證書和 DNS 中相同的主機名。
方向 2:從您的 Git 提供商到 api2.cursor.sh¶
如果您的 GitHub Enterprise Server 或 GitLab Enterprise 主機無法訪問公共互聯網,但仍需向 Cursor 發送 Webhook 或回調,請使用此選項。
Cursor 爲 api2.cursor.sh 提供 AWS PrivateLink 端點服務。您可以在 AWS 賬戶中創建接口 VPC 端點並啓用私有 DNS,使您的 Git 提供商網絡將 api2.cursor.sh 解析爲私有端點 IP 地址。
端點服務詳情¶
創建端點前,Cursor 會確認您的 AWS 主體已加入允許列表。
| 字段 | 值 |
|---|---|
| 服務名稱 | com.amazonaws.vpce.us-east-1.vpce-svc-054b15427d4bea2b7 |
| 服務 ID | vpce-svc-054b15427d4bea2b7 |
| 主區域 | us-east-1 |
| 支持的使用方區域 | us-east-1, us-east-2, us-west-2, eu-central-1, eu-west-1, ap-southeast-2 |
| IP 地址類型 | 僅 IPv4 |
| 私有 DNS 名稱 | api2.cursor.sh |
模式 1:AWS 託管的私有 DNS¶
這是推薦模式。設置 private_dns_enabled = true。
resource "aws_vpc_endpoint" "cursor_api2" {
vpc_id = aws_vpc.app.id
service_name = "com.amazonaws.vpce.us-east-1.vpce-svc-054b15427d4bea2b7"
service_region = "us-east-1"
vpc_endpoint_type = "Interface"
subnet_ids = [for subnet in aws_subnet.app_private : subnet.id]
private_dns_enabled = true
security_group_ids = [aws_security_group.cursor_api2_endpoint.id]
}
AWS 會將您的 VPC 與 api2.cursor.sh 的私有託管區域關聯。在 VPC 內,api2.cursor.sh 會解析爲端點 ENI 的 IP 地址。無需創建 Route 53 記錄。
模式 2:客戶管理的私有託管區域¶
如果您希望自行管理 DNS 記錄,請使用此模式。將 private_dns_enabled = false,然後爲消費者 VPC 創建一個解析 api2.cursor.sh 的私有託管區域。
resource "aws_vpc_endpoint" "cursor_api2" {
vpc_id = aws_vpc.app.id
service_name = "com.amazonaws.vpce.us-east-1.vpce-svc-054b15427d4bea2b7"
service_region = "us-east-1"
vpc_endpoint_type = "Interface"
subnet_ids = [for subnet in aws_subnet.app_private : subnet.id]
private_dns_enabled = false
security_group_ids = [aws_security_group.cursor_api2_endpoint.id]
}
resource "aws_route53_zone" "cursor_api2" {
name = "api2.cursor.sh"
comment = "Customer-managed PHZ for api2.cursor.sh scoped to the app VPC."
vpc {
vpc_id = aws_vpc.app.id
}
}
resource "aws_route53_record" "cursor_api2_a" {
zone_id = aws_route53_zone.cursor_api2.zone_id
name = "api2.cursor.sh"
type = "A"
alias {
name = aws_vpc_endpoint.cursor_api2.dns_entry[0].dns_name
zone_id = aws_vpc_endpoint.cursor_api2.dns_entry[0].hosted_zone_id
evaluate_target_health = false
}
}
如果 GitHub Enterprise Server 或 GitLab Enterprise 使用端點 VPC 外部的 DNS,請將對 api2.cursor.sh 的查詢轉發至 VPC 解析器,或創建等效的私有 DNS 覆蓋。請勿創建公共 DNS 覆蓋。
Cloudflare Tunnel¶
當 AWS PrivateLink 不適用時,請使用 Cloudflare Tunnel。
Cursor 會創建隧道,並提供:
- 由 Cursor 控制的 DNS 下的公共主機名
- 通過安全的 1Password 共享提供的隧道令牌
cloudflared配置示例
您的網絡運行 cloudflared 並向 Cloudflare 建立出站連接,無需配置入站防火牆規則。
cloudflared 配置示例:
ingress:
- hostname: <cursor-provided-hostname>
service: https://<your-internal-service>:443
- service: http_status:404
運行命令示例:
docker run -d --restart=always --name cloudflared \
-v /path/to/config.yml:/etc/cloudflared/config.yml \
cloudflare/cloudflared:latest \
tunnel --config /etc/cloudflared/config.yml \
run --token <TUNNEL_TOKEN>
請妥善保管隧道令牌,切勿通過電子郵件或 chat 發送。
完成源代碼控制連接¶
配置好私有網絡後,請在 Cursor 中完成源代碼控制設置:
- 如果使用 GitHub Enterprise Server,請按照 GitHub 集成設置 操作。
- 如果使用 GitLab Enterprise,請按照 GitLab 集成設置 操作。
- 如果使用 Bitbucket Data Center,請按照 Bitbucket 集成設置 操作。
- 請使用 TLS 證書和私有 DNS 配置中包含的同一主機名。
- 如果 Git 提供商前部署了代理,請確保其允許前提條件中所述的已認證 API 流量。
Cursor 會使用已連接的源代碼控制集成,爲雲端代理、Bugbot 及其他需要訪問代碼倉庫的 Cursor 服務提供支持。
檢查私有 Webhook 路徑¶
如果您的 Git 提供商通過 api2.cursor.sh PrivateLink 路徑將 Webhook 發送到 Cursor,請從 GitHub Enterprise Server 或 GitLab Enterprise 所使用的同一網絡路徑運行以下檢查:
getent hosts api2.cursor.sh
# 或者,如果有 dig 命令
dig +short api2.cursor.sh
curl -sS https://api2.cursor.sh/
解析出的每個 IP 都應位於您的 consumer VPC CIDR 內。如果看到 3.x.x.x 或 44.x.x.x 等 public IPs,說明私有 DNS 未生效。
curl 請求應返回 HTTP 200,且響應體以 Welcome to Cursor. 開頭。這表明請求已到達正常運行的 Cursor api2 backend。
疑難排查¶
| 症狀 | 可能原因 | 解決方法 |
|---|---|---|
| Cursor 無法完成與您的 Git 提供商之間的私有連接 | Cursor 無法訪問或連接到端點服務 | 確認端點服務名稱、區域和獲准主體與 Cursor 提供的信息一致,然後將時間戳告知 Cursor |
| Cursor 顯示端點連接正在等待客戶操作 | 端點服務需要在您的 AWS 賬戶中批准 | 查看該服務待處理的端點連接請求,並批准 Cursor 的請求 |
| Bugbot 或 Cloud Agents 可以連接到 GHES,但在 app 設置、倉庫同步或 webhook 處理時失敗 | GHES 前端的代理阻止或改寫了經過身份驗證的 GitHub REST 或 GraphQL API 請求 | 允許 Cursor 的 GitHub App 集成使用經過身份驗證的 GitHub REST 和 GraphQL API |
api2.cursor.sh 解析爲公共 IP 地址 |
GitHub Enterprise Server 或 GitLab Enterprise 使用的解析器路徑中未配置私有 DNS | 啓用 AWS 託管的私有 DNS,或將 DNS 轉發到端點 VPC 解析器 |
與 api2.cursor.sh:443 的 TCP 連接超時 |
安全組、NACL、路由表或防火牆阻止了流向端點 ENI 的流量 | 允許從您的 Git 提供商網絡到端點 ENI 的 TCP 443 流量 |
api2.cursor.sh 的 TLS 連接失敗 |
DNS 指向錯誤的目標,或客戶端未使用 SNI | 檢查端點 DNS,並啓用 SNI 後重試 |
curl https://api2.cursor.sh/ 未返回 Welcome to Cursor. |
流量未到達正常運行的 Cursor 後端 | 將時間戳、源 VPC 和解析得到的端點 IP 地址告知 Cursor |
| Cloudflare Tunnel 無法連接 | cloudflared 無法連接到 Cloudflare,或 token/config 不正確 |
檢查出站防火牆規則、token 及 cloudflared 日誌 |
Google Private Service Connect¶
Cursor 目前尚未提供面向客戶的 Google Private Service Connect。
如果您需要從 GCP VPC 私有網絡連接到 Cursor 服務,或從 Cursor 連接到 GCP 項目中的私有服務,請聯繫 Cursor,以便我們評估具體需求。目前,在適用的情況下,請使用 AWS PrivateLink 或 Cloudflare Tunnel。
需提供給 Cursor 的信息¶
對於連接您的 Git 提供商或軟件包註冊表的 AWS PrivateLink:
- 端點服務名稱
- AWS 區域
- Git 或註冊表主機名
- 是否啓用了私有 DNS
- 負載均衡器是否保留客戶端 IP 地址或篩選源 IP 地址
對於通過 AWS PrivateLink 訪問 api2.cursor.sh:
- 需要加入 Cursor 允許列表的 AWS 主體
- 將創建接口端點的 VPC 和區域
- 是否計劃使用 AWS 託管的私有 DNS 或客戶管理的 DNS
對於 Cloudflare Tunnel:
- 內部源站 URL
- 用於安全的 1Password 共享的客戶聯繫人
- 任何主機名或命名限制