如果你需要让云服务器能够随时自动拉取 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

  1. 打开你的 GitHub 仓库,进入 SettingsDeploy keys,点击 Add deploy key
  2. Title(标题):填一个便于识别的名字,比如 Production-ServerVPS-Deploy-Key
  3. Key(密钥):粘贴刚才复制的公钥内容。
  4. Allow write access(允许写入权限)不要勾选。如果服务器只需要拉取代码,保持只读是最安全的选择。
  5. 点击 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 别名加以区分即可。