You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GCP虚拟机上自动配置GitHub SSH私钥以克隆仓库?

在GCP Spot虚拟机中自动配置GitHub SSH私钥的最佳实践

核心问题解答

  • 直接在启动脚本里写私钥?绝对不行:启动脚本会存在GCP实例元数据中,任何有权限查看实例元数据的人都能拿到你的私钥,完全违反安全最佳实践。
  • 用scp传输私钥?没必要:这种方式需要本地与VM保持网络连通,自动化程度低,而且Spot VM可能在任意区域创建,操作起来非常麻烦,不是自动化场景的最优解。
  • 正确姿势:用GCP Secret Manager存储私钥,启动脚本拉取配置

具体实现步骤

1. 准备GitHub SSH私钥

生成无密码的SSH私钥(启动脚本需要自动使用,带密码的话无法完成自动化操作):

ssh-keygen -t ed25519 -C "your-github-email@example.com" -N "" -f github_ssh_key

将对应的公钥添加到GitHub账号的SSH密钥列表中。

2. 将私钥上传到GCP Secret Manager

通过GCP控制台或gcloud命令创建新Secret,把生成的私钥内容上传:

gcloud secrets create github-ssh-private-key --data-file=github_ssh_key

3. 给VM服务账号授权

确保Spot VM使用的服务账号拥有读取该Secret的权限:

gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
  --member="serviceAccount:YOUR_VM_SERVICE_ACCOUNT@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/secretmanager.secretAccessor"

4. 编写启动脚本

将以下内容作为启动脚本添加到Spot VM的元数据中:

#!/bin/bash

# 配置SSH目录及权限
mkdir -p ~/.ssh
chmod 700 ~/.ssh

# 从Secret Manager拉取私钥并设置权限
gcloud secrets versions access latest --secret=github-ssh-private-key > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa

# 添加GitHub到known_hosts,避免首次克隆的确认提示
ssh-keyscan github.com >> ~/.ssh/known_hosts
chmod 644 ~/.ssh/known_hosts

# 克隆私有仓库
git clone git@github.com:YOUR_USERNAME/YOUR_PRIVATE_REPO.git

替代方案:用GitHub个人访问令牌(HTTPS方式)

如果觉得SSH配置繁琐,可以改用GitHub个人访问令牌(PAT),同样存入Secret Manager,启动脚本拉取后通过HTTPS克隆:

#!/bin/bash
# 从Secret Manager拉取PAT
PAT=$(gcloud secrets versions access latest --secret=github-pat)
# 克隆仓库
git clone https://${PAT}@github.com/YOUR_USERNAME/YOUR_PRIVATE_REPO.git

内容的提问来源于stack exchange,提问作者Davide

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 17:15:11