在 GitHub 上用不同的 SSH 公钥部署多个应用(from unixchina.com)

GitHub是一个免费的基于 git 的开源软件仓库托管服务,包括Ruby on Rails,Rspec,Prototype在内的许多开源软件都在 GitHub 上架设了软件仓库。
如果你有两个或两个以上的 GitHub 仓库,并且想用不同的公钥/私钥来管理这些仓库的话,会遇到这样一个问题。当你 clone第一个仓库的时候,git 会使用第一对公钥/私钥,这个时候仍然一切正常。可当你需要用另一对公钥/私钥来 clone 第二个仓库的时候,git默认仍然会使用第一对公钥/私钥,然后 GitHub 就会返回一个授权错误。
要解决这个问题,首先需要在 ~/.ssh/ 目录下新建一个 config 文件,为不同的项目分别指定公钥/私钥
~/.ssh/config


Host project-1
HostName github.com
User git
IdentityFile /home/xxx/.ssh/id_rsa_project_1
Host project-2
HostName github.com
User git
IdentityFile /home/xxx/.ssh/id_rsa_project_2


然后用 ssh-keygen 创建对应的公钥/私钥。

$ ls -l ~/.ssh
total 24
-rw-r--r-- 1 wyt wyt 244 2008-06-21 13:18 config
-rw------- 1 wyt wyt 1675 2008-06-21 13:04 id_rsa_project_1
-rw-r--r-- 1 wyt wyt 392 2008-06-21 13:04 id_rsa_project_1.pub
-rw------- 1 wyt wyt 1675 2008-05-20 11:24 id_rsa_project_2
-rw-r--r-- 1 wyt wyt 392 2008-05-20 11:24 id_rsa_project_2.pub
-rw-r--r-- 1 wyt wyt 802 2008-05-24 22:44 known_hosts

将公钥上传到 GitHub 上之后,就可以用下面的指令 clone 相应的软件仓库了

$ git clone git@project-1:username/project-1.git
$ git clone git@project-2:username/project-2.git

0 Responses to "在 GitHub 上用不同的 SSH 公钥部署多个应用(from unixchina.com)"