2008年6月21日

有备无患:在 GitHub 上用不同的 SSH 公钥部署多个应用

GitHub 是一个免费的基于 git 的开源软件仓库托管服务,包括 Ruby on RailsRspecPrototype 在内的许多开源软件都在 GitHub 上架设了软件仓库。


如果你有两个或两个以上的 GitHub 仓库,并且想用不同的公钥/私钥来管理这些仓库的话,会遇到这样一个问题。当你 clone 第一个仓库的时候,git 会使用第一对公钥/私钥,这个时候仍然一切正常。可当你需要用另一对公钥/私钥来 clone 第二个仓库的时候,git 默认仍然会使用第一对公钥/私钥,然后 GitHub 就会返回一个授权错误。


要解决这个问题,首先需要在 ~/.ssh/ 目录下新建一个 config 文件,为不同的项目分别指定公钥/私钥

~/.ssh/config

Host project-1
    HostName github.com
    User git
    IdentityFile /home/wyt/.ssh/id_rsa_project_1

Host project-2
    HostName github.com
    User git
    IdentityFile /home/wyt/.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 条评论:

发表评论

指向此文章的链接:

创建链接

<< 主页