如何在一个服务器上配置多个 GitHub 仓库的 Deploy Keys
354
在现代化的软件开发流程中,自动化部署是一个不可或缺的环节。GitHub 作为最流行的代码托管平台之一,提供了 Deploy Keys 功能,允许服务器通过 SSH 密钥访问特定的仓库,而无需使用个人账户的凭据。然而,当我们需要在一个服务器上配置多个 GitHub 仓库的 Deploy Keys 时,事情就变得复杂了。本文将详细介绍如何在一个服务器上配置多个 GitHub 仓库的 Deploy Keys,确保你的部署流程既安全又高效。
1. 理解 Deploy Keys
Deploy Keys 是 GitHub 提供的一种 SSH 密钥,用于授权服务器访问特定的仓库。与个人账户的 SSH 密钥不同,Deploy Keys 只能访问一个仓库,且通常只具有读取权限(除非你明确赋予写入权限)。这使得 Deploy Keys 非常适合用于自动化部署场景。
2. 生成 SSH 密钥对
首先,我们需要为每个 GitHub 仓库生成一个独立的 SSH 密钥对。假设我们有两个仓库:repo1 和 repo2。
# 为 repo1 生成 SSH 密钥
ssh-keygen -t rsa -b 4096 -C "repo1_deploy_key" -f ~/.ssh/repo1_deploy_key
# 为 repo2 生成 SSH 密钥
ssh-keygen -t rsa -b 4096 -C "repo2_deploy_key" -f ~/.ssh/repo2_deploy_key这将在 ~/.ssh/ 目录下生成两个密钥对:repo1_deploy_key 和 repo2_deploy_key,以及对应的公钥文件 repo1_deploy_key.pub 和 repo2_deploy_key.pub。
3. 配置 SSH 配置文件
为了在同一台服务器上管理多个 Deploy Keys,我们需要配置 SSH 客户端,使其能够根据不同的仓库使用不同的密钥。编辑 ~/.ssh/config 文件:
# ~/.ssh/config
# 配置 repo1 的 Deploy Key
Host github-repo1
HostName github.com
User git
IdentityFile ~/.ssh/repo1_deploy_key
# 配置 repo2 的 Deploy Key
Host github-repo2
HostName github.com
User git
IdentityFile ~/.ssh/repo2_deploy_key在这个配置中,我们为每个仓库定义了一个别名(github-repo1 和 github-repo2),并指定了对应的私钥文件。
4. 添加 Deploy Keys 到 GitHub
接下来,我们需要将生成的公钥添加到 GitHub 仓库的 Deploy Keys 设置中。
- 打开
repo1_deploy_key.pub文件,复制其内容。 - 登录 GitHub,进入
repo1仓库的Settings-> 电脑版