可怕,居然可以配置多个git sshkey

前言

有一天小猪心血来潮,觉得之前的 github 账号id (pig) 不够碎,于是注册了一个新的 github 账号 (weijiezhu) ,并且按照 github help 的套路完成了ssh的配置。因为同一个 sshkey (id_rsa) 不允许用在两个账号当中,于是他生成了一个新的 sshkey (github_rsa)。

当他写完代码觉得自己很碎的时候,git push origin master 却返回了一个错误。

$ git push origin master
ERROR: Permission to weijiezhu/react-scaffold.git denied to pig.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

于是乎他跑了一个测试

$ ssh -T [email protected]
Hi pig! You've successfully authenticated, but GitHub does not provide shell access.

wocao,怎么还是pig这个账号呢。 明明弄了新的sshkey。

经过一番捣腾,小猪仿佛发现了什么

ssh 使用了默认的 id_rsa 密钥进行加密,而这个很久以前创建的 sshkey 确实添加到 pig 账号里面了。

当访问 github.com 的时候,github 服务会认为你就是pig这个账户。

噢~那好吧。把 pig 账号里面的 sshkey 删掉吧,反正也不用了。然后把 id_rsa.pub 公钥重新添加到 weijiezhu 这个账号里面,顺便删掉添加的 github_rsa.pub 公钥。

$ pbcopy < ~/.ssh/id_rsa.pub

再次提交代码。Absolutely done!

注意:

上文和下文进阶的用户名和邮箱要配置好,如果有多个账号,建议使用局部的。

git config user.name "用户名"  //在config后加上--global即全局
git config user.email "邮箱"

进阶

然而事情并没有到此结束,装完逼还想跑那是不行的。小猪日后发现自己是一个念旧的人。他想要同时使用两个github。

那好吧,What a big deal~

这个时候我们需要先找到 ~/.ssh/config 文件,然后往里面添加如下配置

Host pig.github.com
        HostName github.com
        IdentityFile ~/.ssh/github_rsa

我们指定 pig.github.com 这个"作用域"下的ssh连接统一指向 github.com ,并且使用之前生成好的 github_rsa 这个密钥加密。

那么默认的就是使用 ~/.ssh/id_rsa 这个密钥加密咯。 并且HostName与“作用域”相同。这个就不需要我们管了。

这个时候我们测试一下呗。

$ ssh -T [email protected]
Hi pig! You've successfully authenticated, but GitHub does not provide shell access.

$ ssh -T [email protected]
Hi weijiezhu! You've successfully authenticated, but GitHub does not provide shell access.

: ) , orz , 这时候还差最后一步

就是修改一下我们在 pig 克隆下来的项目的 remote “作用域” 。

$ git remote rm origin
$ git remote add origin [email protected]:pig/tinynote.git // 注意是 pig.github.com 噢?, 把这个理解为一个“作用域”吧。
$ git push origin master
Everything up-to-date 

同样的,对于使用不同的git服务商,如(coding.net,gitlab等),可以“东施效颦”地使用上文的进阶方案来解决本地多个git账号的问题。

这个时候小猪的队友惊呼 ,Jesus Christ, u save my ass ! orz.

对于ssh无密码登录原理,或者.ssh/config配置不熟悉的可以自行google进行延伸阅读噢。

免责防喷: 如果上文描述哪里有问题,请不吝赐教!

你可能感兴趣的:(可怕,居然可以配置多个git sshkey)