返回

如何在一个服务器上配置多个 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 设置中。

  1. 打开 repo1_deploy_key.pub 文件,复制其内容。
  2. 登录 GitHub,进入 repo1 仓库的 Settings ->  电脑版