git本地管理多个账户

我们可能会需要在一台电脑上以不同的github账户去使用git,这时就需要去解决如何管理本机上的多个ssh key的问题。

1、进入到~/.ssh

打开你的git bash , 输入命令:

1
cd  ~/.ssh

2、将C:\Users\wang1\.ssh目录下的id_rsaid_rsa.pub重新命名(如果有的话),防止被覆盖。比如,我命名为wxler_id_rsa和wxler_id_rsa.pub。

3、生成 新的 ssh密钥

生成第二个ssh key

1
ssh-keygen -t rsa -C "你的github注册邮箱地址"

  • Enter file in which to save the key (/c/Users/wang1/.ssh/id_rsa):提示你把新生成的id_rsa存放到哪里,此处默认会存放在C盘的用户名下的.ssh文件夹下(即你第一个github用户ssh key存放的目录)。这里我只填写了公钥和秘钥文件的名称,所以会在c/Users/wang1/.ssh/目录下生成两个文件:mylayne_id_rsa(秘钥文件)和mylayne_id_rsa.pub(公钥文件)。
  • Enter passphrase (empty for no passphrase): 提示你输入提交项目时输入的验证密码,这是为了防止别人随便在你的项目上push东西。如果你不想每次操作都输入密码,可以不填。

4、添加新 ssh Key

默认SSH只会读取id_rsa,所以为了让SSH识别新的私钥,需要将其添加到SSH agent

1
ssh-add ~/.ssh/mylayne_id_rsa

如果报错:Could not open a connection to your authentication agent,即无法连接到ssh agent
可执行ssh-agent bash命令后再执行ssh-add命。

5、配置config文件

查看.ssh文件夹中是否存在config文件,如果已存在则直接编辑config文件,命令:vim config

如果不存在则需要创建config文件,命令:touch config,再对config文件进行编辑。

对config文件进行配置填写:

1
2
3
4
5
6
7
8
9
Host github.com  #把默认的常用的github Host设为github.com较好
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/wxler_id_rsa

Host mylayne
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/mylayne_id_rsa

config文件主要是为了提交远程仓库的时候,ssh 做区分用的。

主要区分是通过host区分的,所以在以后的push和pull过程中,如果用的第一个,都是正常pull和push,但是对于第二个,要改成自己设置的别名mylayne。

5、测试是否配置成功

1
2
ssh -T git@github.com
ssh -T git@mylayne

出现如图的欢迎语则为配置成功。但是,执行ssh -T git@mylayne出现 permission denied 的错误。

问题解决: 登录mylayne的github账户, 将ssh文件夹中的公钥( mylayne_id_rsa.pub)添加到GitHub管理平台中,在GitHub的个人账户的设置中找到如下界面,title随便起一个,将公钥( id_rsa.pub)文件中内容复制粘贴到key中,然后点击Add SSH key:

这样就成功了,如下图:

6、配置完成后,在连接Host不是github.com的github仓库时,远程库的地址要对应地做一些修改,比如现在添加mylayne帐号下的一个仓库testABC,则需要使用如下命令这样添加:

1
git clone git@mylayne:mylayne/testABC.git

而并非原来的git@github.com:wxler/testABC.git

执行完上述命令后,再执行git pushgit pull等操作就是在mylayne用户下操作,是不是很方便。

【参考文档】

git:如何管理本机的多个ssh密钥

git本地管理多个密钥/账户(原创)

本地管理多个git账号