单一主机访问多 GitHub 项目

当我们服务器需要对托管于 GitHub 的项目进行访问时,我们需要在项目设置中的 Deploy keys 添加服务器的公钥,当我们的服务器同时需要对另一个托管于 GitHub 项目访问时,添加相同的 Deploy keys 就会提示Key already in use,这是由于,一个项目可以由多个不同的公钥,但同一个公钥不允许使用在多个不同的项目中,那么,我们应该如何通过 ssh 访问第二个仓库呢?

答案是我们使用不同的密钥对,首先,我们新生成一对名为 demo 的密钥

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/robin/.ssh/id_rsa): /home/robin/.ssh/demo
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in demo.
Your public key has been saved in demo.pub.
The key fingerprint is:
SHA256:sIouChdx8Qh1M4a6JCyNoDU7/cDKg9Sx23dX8HTksVw robin@ubuntu
The key's randomart image is:
+---[RSA 3072]----+
| ..*.. |
|. oo B. .E|
|o=.=o.o .o+|
|+ *oB o . .oo|
| o.* *. S + . |
| =o+.. o |
|.oo..o . |
|oo. . . . . . |
|o.. . . . |
+----[SHA256]-----+

此时,我们的目标目录下就会新增 demo 和 demo.pub 两个密钥,然后再创建一个vim /home/robin/.ssh/config文件,其中写入如下内容:

1
2
3
4
Host demo
HostName github.com
User robin
IdentityFile ~/.ssh/demo

chmod 600 /home/robin/.ssh/config修改config文件权限,否则会出现Bad owner or permissions on /home/robin/.ssh/config的错误

现在,我们还需要修改下项目的请求地址,在项目目录中执行vim .git/config,修改其中的 url 参数,将其中的 github.com 替换为 demo,如将 [email protected]:ms/demo.git 修改为git@demo:ms/demo.git

Now, enjoy it!

因为热爱,所以执着。