GitHub多账户及其他平台Git账号SSH配置
首先,Git是个好东西!
遇到Git之后,基本上是帮我打开了学习的新思路了,虽然技术不精,但是相信经过慢慢的摸索,至少能serve我自己的需求!
这篇想记录一下:GitHub多账户及其他平台Git账号在同一客户端SSH的配置方法!这个需求其实是很常见的,比如GitHub上,往往会私人一个号,工作一个号;当代码基本无法公开或者Private Respoitories不够用的时候,又得在其他平台开几个账号。然而,账号可以有多个,机器往往只有一个,于是就会有如题的问题了。
首先,我们假设如下场景
私人GitHub账号:huofu.git@gmail.com
公司GitHub账号:cooking.git@gmail.com
私人Bitbucket账号:huofu.git@gmail.com
*没看错!很有可能,你注册两个平台用的是同一个邮箱
具体的SSH配置方法就来了
第零步:清除前期全局设置
很多Git教程上来会教大家用 git config --global user.name 'xxx'
和 git config --global user.email 'xxx@yyy.com'
来设置一个全局的用户信息,当一个客户端需要支持多个账户的时候,通常就不能这么做了,用如下命令清除全局设置:
git config --global --unset user.name
git config --global --unset user.email
第一步:创建SSH Keys
SSH Keys是客户端和Git服务器的沟通凭证,所以基本上是每个账户会对应有一对类似 id_rsa
和 id_rsa.pub
这样的Keys,其中前者为私钥,自己保存就好,后者为公钥,需要设置到服务器端。RSA是公私密钥的一种规则,详情请咨询Google老师~
那么第一步就是利用命令 ssh-keygen -t rsa -C "xxx@yyy.com"
来给每个账户分别创建对应的SSH Keys。每次创建,需要填写保存文件名(每次要不一样,否则会覆盖)及对应的密码(可以不填)。
$ ssh-keygen -t rsa -C "huofu.git@gmail.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/huofu/.ssh/id_rsa): id_rsa_huofu_github
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa_huofu_github.
Your public key has been saved in id_rsa_huofu_github.pub.
生成完,就可以开心地把对应Keys的公钥(.pub)内的内容复制到服务器端的账户内了,到这一步,服务器端的配置算是结束了!
第二步:配置SSH Config
这个位于 ~\.ssh\
底下的config文件是配置的关键,具体格式如下。基本上,每一个账号都需要对应几个配置项,Host是你对这个Git账号的昵称,基本上可以随你的脑洞填;HostName就要根据对应的平台填写,比如 github.com
或者 bitbucket.org
;User自然是填Git;最后IdentifyFile是填写对应私钥的路径。
# huofu@github
Host huofu.github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_huofu_github
# cooking@github
Host cooking.github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_cooking_github
# huofu@bitbucket
Host huofu.bitbucket.org
HostName bitbucket.org
User git
IdentityFile ~/.ssh/id_rsa_private_huofu
第二点五步:配置验证
编辑完这个config文件,基本上是已经完成了配置,在最后使用前,我们可以用下面的命令进行验证:
$ ssh-add ~/.ssh/id_rsa_huofu_github
Enter passphrase for /c/Users/huofu/.ssh/id_rsa_huofu_github:
Identity added: /c/Users/huofu/.ssh/id_rsa_huofu_github (/c/Users/huofu/.ssh/id_rsa_huofu_github)
$ ssh -T git@huofu.github.com
Hi huofu! You've successfully authenticated, but GitHub does not provide shell access.
注意到,我们平时用的 git@github.com
依然被我们的配置文件修改成 git@huofu.github.com
了。那同一平台下不同账号的实现也就顺理成章了。
*如果第一个命令输出错误 Could not open a connection to your authentication agent.
,我们可以使用 ssh-agent bash
。
第三步:不同账户的使用
当配置完成后,有需要对本地不同项目的Git几处配置修改。第一: user.name
和 user.email
需要重新配置,因为我们已经取消了全局配置;第二:remote origin
需要重新配置,以符合新配置的HostName。
$ git config user.name 'huofu'
$ git config user.email 'huofu.git@gmail.com'
$ git remote rm origin
$ git remote add origin git@huofu.github.com:huofu/xxxx.git
*config的配置可以通过 config --list
来查阅!
以上几个步骤就是GitHub多账户及其他平台Git账号SSH配置方法!配置成功后,就能按照Git的正规流程来操作了!