一般,一台电脑可能会配置多个git账号
- 个人的github账号
- 公司的gitlab账号
这样,就需要生成不同的ssh key,让我们以不同的身份操作不同的仓库。
那么,一台电脑怎么配置多个ssh key呢?
我们可以对不同的git账号依次生成ssh key,然后创建~/.ssh/config进行管理。
一、 为不同的git账号生成ssh key
1.1 为第1个git账号生成ssh key
1.设置GitHub的username和email
git config --global user.name “Git账号即username”
git config --global user.email “Git邮箱”
2.生成一个新的SSH密钥
ssh-keygen -t rsa -C “Git邮箱”
3.查看~/.ssh目录下,已经生成id_rsa id_rsa.pub文件
~/.ssh
id_rsa id_rsa.pub
其中id_rsa为私钥配置到本地,id_rsa.pub为公钥配置到github上
1.2 为第2个git账号生成ssh key
ssh-keygen -t rsa -C “git邮箱”
注意这里不要一路回车,在提示存放文件名时,手动输入文件名,避免文件被覆盖
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Gary/.ssh/id_rsa): /c/Users/Elon/.ssh/id_rsa_gitlab
<剩下两个直接回车>
再查看~/.ssh路径下,新生成一个秘钥
id_rsa
id_ras.pub
id_rsa_gitlab
id_rsa_gitlab.pub
在一台电脑上,为更多git账号生成ssh key,重复1.2即可。
二、配置私钥和公钥
eval $(ssh-agent -s) //在后台启动 ssh-agent
ssh-add /c/Users/Elon/.ssh/id_rsa //将SSH私钥添加到 ssh-agent
ssh-add /c/Users/Elon/.ssh/id_rsa_gitlab //将SSH私钥添加到 ssh-agent
公钥分别配置到github和gitlab中。
三、配置config文件
在~/.ssh目录下,创建名为config的文件。
vim ~/.ssh/config
添加如下内容
Host github.com
HostName github.com
User 在github注册的username
IdentityFile ~/.ssh/id_rsa
Host gitlab #填写git服务器的域名
HostName gitlab
User 在gitlab注册的username
IdentityFile ~/.ssh/id_rsa_gitlab
Host和HostName填写git服务器的域名
IdentityFile为私钥的路径
注意:多个Host公用一个公钥时, 对应的HostName和Port必须跟在Host后面
如果在Linux系统下提示错误:Bad owner or permissions on /home/gary/.ssh/config,说明config权限过大,chmod命令调整权限:
chmod 644 ~/.ssh/config
四、验证配置是否成功
ssh -T git@github.com
ssh -T gitlab域名
如果没有成功,可以加v查看输出编译信息,根据编译信息查找问题。
ssh -vT gitlab域名
到这里,多个ssh key就配置成功了。
五、关于用户名
如果之前有设置全局用户名和邮箱的话,需要unset一下
比如文章里1.1中的第1步,就设置了个人的github账号为全局的,
git config --global --unset user.name
git config --global --unset user.email
然后在不同的仓库下设置局部的用户名和邮箱
比如在公司的repository下
git config user.name “yourname”
git config user.email “youremail”
同样,在自己的github的仓库下,将上面命令中的name和email换成github的,再执行下。
这样就可以在不同的仓库,用不同的账号登录啦!