《Cursor文檔》-私有網絡連接

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 支持在 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.comartifactory.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.x44.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 共享的客戶聯繫人
  • 任何主機名或命名限制

延伸閱讀

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜