git配置多个ssh key

发布 : 2019-01-18 分类 : 少年,你渴望力量吗 浏览 :

当有多个git账号时,比如:

一个github,用于自己进行一些开发活动

一个gitlab,用于公司内部的git

这两者如果邮箱不同的话,在生成第二个key的时候会覆盖第一个的key,会导致一个用不了。

解决办法就是:

生成两个(或多个)不同的公私密钥对,用config文件管理它们

1.步骤

我们假设原来在~/.ssh目录下已经生成了一个密钥对:

1.1 生成第二个key

接下来我们生成第二个ssh key

1
ssh-keygen -t rsa -C "yourmail@gmail.com"

这里不要一路回车,我们需要自己手动填写保存路径和文件名(避免覆盖同名文件):

1
2
3
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Gary/.ssh/id_rsa): /c/Users/Gary/.ssh/id_rsa_work
<剩下两个直接回车>

这里我们用id_rsa_work来区别原有密钥对,避免被覆盖。

完成之后,我们可以看到~/.ssh目录下多了两个文件,变成:

1
2
3
4
5
id_rsa
id_ras.pub
id_rsa_work
id_rsa_work.pub
known_hosts

1.2 打开ssh-agent

这里如果你用的github官方的bash,用:

1
ssh-agent -s

如果是其他的,比如msysgit,用:

1
eval $(ssh-agent -s)

略过这一步的话,下一步会提示这样的错误:Could not open a connection to your authentication agent.

1.3 添加私钥

1
2
ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/id_rsa_work

1.4 创建config文件

~/.ssh目录下创建名为config的文件。

1
touch config

添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
# gitlab
Host git.iboxpay.com
HostName git.iboxpay.com
PreferredAuthentications publickey // 可以省略
KexAlgorithms diffie-hellman-group1-sha1 // 可以省略
IdentityFile ~/.ssh/id_rsa_work

# github
Host github.com
HostName github.com
PreferredAuthentications publickey // 可以省略
KexAlgorithms diffie-hellman-group-exchange-sha256 // 可以省略
IdentityFile ~/.ssh/id_rsa

其中,HostHostName填写git服务器的域名,IdentityFile指定私钥的路径,KexAlgorithms指定密钥加(解)密算法,注意需要和服务器提供的方法相匹配。

** 目前github提供以下几种加(解)密方法:ecdh-sha2-nistp256,ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256

1.5 测试

然后用ssh命令分别测试:

1
ssh -T git@github.com

2. 关于用户名

如果之前有设置全局用户名和邮箱的话,需要unset一下。

1
2
git config --global --unset user.name
git config --global --unset user.email

然后在不同的仓库下设置局部的用户名和邮箱。

比如在公司的repository

1
2
git config user.name "yourname"
git config user.email "youremail"

在自己的github的仓库在执行刚刚的命令一遍即可。

这样就可以在不同的仓库,已不同的账号登录。

3. 说明

本文转载自歪麦博客,原文地址:>>>点我进入

本文作者 : 冰比冰水冰
原文链接 : http://iceiceice.top/2019/01/18/git-and-ssh/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
留下足迹