如何使用 GitHub Deploy Keys 让服务器安全拉取私有仓库代码
如果你需要让云服务器能够随时自动拉取 GitHub 上的私有仓库代码(例如用于自动化部署、CI/CD 流程等),最安全且推荐的方式是使用 Deploy Keys(部署密钥)。
相比直接使用个人账号的 SSH Key 或 Personal Access Token,Deploy Key 的优势在于:
- 每个仓库独立配置,权限隔离
- 可以设置为只读(Read-only),即使密钥泄露也无法被用来修改代码
- 不依赖个人账号,团队成员变动不影响部署
下面是完整配置步骤。
第一步:在服务器上生成 SSH 密钥对
登录到你的 VPS 终端,执行以下命令生成一个新的 SSH 密钥。建议使用专门的文件名,避免和个人密钥混淆:
ssh-keygen -t ed25519 -C "deploy-key-myproject" -f ~/.ssh/id_ed25519_myproject提示:一路回车即可,不要设置 passphrase(密码),否则自动化拉取代码时会因为需要人工输入密码而中断。
第二步:复制公钥内容
生成完成后,查看并复制公钥(.pub 结尾的文件)内容:
cat ~/.ssh/id_ed25519_myproject.pub复制输出的整行内容(通常以 ssh-ed25519 AAAAC3Nz... 开头)。
第三步:在 GitHub 仓库中添加 Deploy Key
- 打开你的 GitHub 仓库,进入
Settings→Deploy keys,点击 Add deploy key。 - Title(标题):填一个便于识别的名字,比如
Production-Server或VPS-Deploy-Key。 - Key(密钥):粘贴刚才复制的公钥内容。
- Allow write access(允许写入权限):不要勾选。如果服务器只需要拉取代码,保持只读是最安全的选择。
- 点击 Add key 保存。
第四步:配置 SSH,让服务器识别该密钥
为了让服务器在连接 GitHub 时自动使用这个特定的密钥,需要编辑 ~/.ssh/config 文件:
nano ~/.ssh/config添加以下内容:
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_myproject保存退出(Nano 中按 Ctrl + O 保存,Ctrl + X 退出),然后设置正确的文件权限:
chmod 600 ~/.ssh/config第五步:克隆与更新代码
完成以上配置后,使用 SSH 地址(不是 HTTPS 地址)克隆仓库:
git clone [email protected]:your-username/your-repo.git之后在项目目录中,直接执行以下命令即可拉取最新代码:
git pull小结
通过 Deploy Key,你可以让服务器以最小权限、最自动化的方式安全地与 GitHub 私有仓库交互,非常适合配合脚本或 CI/CD 工具实现自动部署。如果一台服务器需要部署多个私有仓库,只需为每个仓库重复上述步骤,并在 ~/.ssh/config 中通过不同的 Host 别名加以区分即可。
暂无标签