个人和小微企业由于资金紧张,所以大部分都只有一台服务器来跑所有的服务,如果不同的服务是存储在不同的github仓库的话,那就需要将不同的github仓库代码clone到同一台服务器的不同目录。

要实现这样的需求其实我们只需要实现将服务器ssh公钥添加到github仓库的Deploy Key中即可,但是一个ssh key只能被添加一次,如果你将同一个key添加到不同仓库的Deploy Key中github会提示“Key is already in use”

Linux终端Shell脚本代码

解决办法就时我们生成多个ssh key密钥对,然后让git克隆不同仓库的代码时使用不同的公钥即可,操作步骤如下:

1、生成多个ssh密钥对(为简单起见我们生成两个,一路回车即可):

ssh-keygen -t rsa -f ~/.ssh/id_rsa_仓库1
ssh-keygen -t rsa -f ~/.ssh/id_rsa_仓库2

2、添加不同公钥到对应仓库的Deploy Key中:

cat ~/.ssh/id_rsa_仓库1.pub
cat ~/.ssh/id_rsa_仓库2.pub

3、告诉git工具不同的仓库要使用不同的公钥,这需要通过修改 ~/.ssh/confg文件来实习:

Host github-仓库HOST别名1
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_仓库1的私钥

Host github-仓库HOST别名2
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_仓库2的私钥

最后就可以使用git进行免密操作了(注意git@后面的主机名其实是上面在~/.ssh/confg中添加的别名):

git clone git@github-仓库HOST别名1:username/仓库1.git
git clone git@github-仓库HOST别名2:username/仓库2.git