Cover image

Github多sshkey管理

Oct 8, 2015

断断续续的牺牲了一个十一黄金周的时间,终于配置好了这个blog, 虽说还有一些不足之处,留着以后再来逐步的完善就好。可是这个blog被妹子给瞧见了, 非要也给她也搭一个。好吧,还好这个repo已经建好,直接给clone过去就OK了,倒是省了不少事。

但是,这时候问题却出现了,之前一直只用一个github帐号,完全可以用一个sshkey来登陆github. 不过现在要管理两个帐号, push 以及 pull就不成了。但一直输入密码跟帐号也不是问题啊.还是看看怎么解决吧。

单个github帐号免密码登陆

对于单个github,还是老方法,先生成sshkey,然后把publickey copy 到github的setting > SSH keys中

cd ~/.ssh
ssh-keygen -t rsa -C "youremail@email.com"

其中-t是指type – 指定要创建密钥的类型,另一个-C是个什么鬼?man一下原来是添加注释,难怪发现网上有的提到,有的没有提到。

之后,我们打开repo的git配置文件.git/config,将远程仓库地址改成ssh形式,git@github.com:user.name/repoName.git

当然,在git commit之前还要通过git config来设置user.name以及user.email。如果只是单个帐号的话global模式会比较方便,而多个帐号只能设置成local模式。

多个github帐号管理

以上是单个github帐号进行sshkey登陆的配置。但遇到两个及以上的github的帐号时,一个key显然不能满足两个帐号。 这样就必须用到两个key了。同样我们需要利用ssh-keygen来生成每一个帐号的sshkey,当然此时不能一路回车了,要为每个帐号的sshkey分别命名。 由于不是默认的名称,所以我们需要 ssh-add 来添加每一个会用到的sshkey。 哦,对了,如果之前设置了git config --global,现在必须 git config --global --unset掉,然后为每个repo设置local的user.name以及user.email.

ssh-add ~/.ssh/id_rsa1
ssh-add ~/.ssh/id_rsa2

然后在 ~/.ssh/config 中添加每个帐号的Host信息。

Host user1.github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa1

Host user2.github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa2

好了,现在就可以测试是否可以链接了。

ssh -T user1.github.com
Hi user1! You've successfully authenticated, but GitHub does not provide shell access.
ssh -T user2.github.com
Hi user2! You've successfully authenticated, but GitHub does not provide shell access.

如上显示,便表示链接成功了。

现在我们需要将每个仓库下的配置改成相应Host的形式了,改成如下所示

url=user1.github.com:user.name/repoName.git
url=user2.github.com:user.name/repoName.git

自此以后,就可以git push了。


08 Oct 2015

Post by: MetaCoder