让多个 Github 仓库使用相同的 Deploy Key
版权声明:所有博客文章除特殊声明外均为原创,允许转载,但要求注明出处。
相信在同一机器上部署多个应用并不是什么罕见的需求,特别是像我这样很小的个人网站来说更是如此。但在我部署子站的时候发现一个问题,那就是 Github 并不允许多个仓库使用相同的 Deploy Key。如果你尝试这样做的话,会得到如下提示:
但我又需要 Deploy Key 来简化项目的部署,其他方式(包括每次更新时手工输入,或者用明文记录 Github 登录信息)都是不可接受的。那应该怎么办呢?稍加检索,找到了如下的方法,记此备考。
首先,在生成 SSH Key 的时候,需要添加 -f 参数,指定不同于默认的文件名(id_rsa),以免无意中覆盖:
ssh-keygen -t rsa -f ~/.ssh/repo1_rsa -C "repo1 user"
ssh-keygen -t rsa -f ~/.ssh/repo2_rsa -C "repo2 user"
接下来,需要自己编辑 ~/.ssh/config
文件以指定不同的登录配置。如果该文件不存在,则新建一个:
Host repo1
Hostname github.com
User git
IdentityFile ~/.ssh/repo1_rsa
Host repo2
Hostname github.com
User git
IdentityFile ~/.ssh/repo2_rsa
这里的要点是,用不同的 Host 代替默认的 git 协议地址(github.com)。
然后,你可以按照配置,把生成的 SSH Key 配置到不同的 Github 仓库。
最后,在签出仓库时,使用类似下面的命令:
git clone git@repo1:<repos1_url>
git clone git@repo2:<repos2_url>
其中 Host 部分要和 config
文件中定义的 Host 完全一致。
上述工作完成后,我们就可以在同一服务器上用 git 协议签出多个仓库了。