配置git多SSH-Key共存

今天整理下以前在配置git过程中的SSH-Key共存的方法

git的入门学习

推荐廖雪峰的网站: http://www.liaoxuefeng.com

关于多个SSH Key的共存

在使用git过程中,会遇到配置多个ssh-key的共存情况,比如一个连接公司的git,一个用来连接github,或者两个github账户。这里以github和oschina两个ssh-key共存举例。

首先配置github,生成ssh-key

1
ssh-keygen -t rsa -Caaa@gmail.com” -f ~/.ssh/github_id_rsa

过程中会要求设置密码,直接回车为空就可以了,此时会生成两个文件githubidrsa和githubidrsa.pub 为了方便区分多个ssh-key,这里我们指定名为githubidrsa,如果不指定会按照生成默认的idrsa

添加SSH agent

1
ssh-add ~/.ssh/github_id_rsa

由于在默认情况下,SSH agent只会去读取id_rsa,为了使新生成的github_id_rsa能被SSH agent读取,将github_id_rsa添加到SSH agent

ssh-key粘贴到github上

1
vim ~/.ssh/github_id_rsa.pub

可以查看生成的ssh-key,将ssh-key粘贴到github上,并用相同的方法生成oschina的ssh-key,并粘贴到oschina上

ssh共存配置

1
sudo vim ~/.ssh/config

为了让两个ssh-key共存,在/.ssh下生成一个config文件,通过config文件指定不同的私钥对应的不同git服务器

1
2
3
4
5
6
7
8
9
10
11
12
#GitHub(aaa@gmail.com)
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/github_id_rsa

#OSChina(bbb@gmail.com)
Host git.oschina.net
HostName git.oschina.net
User git
IdentityFile ~/.ssh/oschina_id_rsa
然后可以测试下是否成功连接

检查配置是否起作用

1
2
ssh -T github.com
ssh -T git.oschina.net

过程中会问你是否添加到knownhosts,yes即可,会在.ssh目录下生成一个known_hosts文件

git config 配置

需要注意一点的是,git服务一般会根据配置文件的user.name和user.email来获取作者信息(比如上面的github的aaa@gmail.com和oschina的bbb@gmail.com),如果多账户信息不同的话,需要注意在使用前修改配置。

1
2
3
4
5
#查看配置信息
git config --list
#设置全局的name和email
git config --global user.name "xxx"
git config --global user.email "xxx.gmail.com"