解决Git同时部署到GitHub和Gitee时,密钥SSH冲突问题
前言
问题描述:
- 当我们拥有多个git账号的时候,比如一个是GitHub账号,用于自己进行一些开发活动;后来觉得GitHub访问起来太慢了,又注册了国内的码云gitee账号(或者来了一个gitlab账号,一般是公司内部用到的git)。我们在使用这几者时,就必然会涉及到一个问题:在绑定SSH密钥的过程中,生成第二个git的key的时候会覆盖第一个的key,导致必然其中有一个就用不了。
解决方案:
- 多个ssh key管理:我们可以在.ssh文件目录下新建一个config文件配置一下,就可以解决问题
正文
一、原因分析:
注意:出现SSH密钥冲突问题的实质,其实就在于我们每次(尤其是第一次时)是否知道可以自定义密钥名
很多人第一次生成密钥时,直接在命令行中:
1
2
3git config --global user.name "用户名"
git config --global user.email "用户邮箱"
ssh-keygen -t rsa -C "用户邮箱"前两行是在设置用户名和邮箱,重点是上面第三行代码,即生成密钥的代码。如果就按这样写的话,那么密钥的文件名字就是默认的:
那么我们在第二个平台进行生成密钥(比如我们已经生成过GitHub的ssh密钥,再准备生成gitee的密钥时):
图中 Overwrite(y/n)? 即在提示是否覆盖:选择y,就会覆盖导致之前的失效;选择n,即取消本次的覆盖,就不会创建新的密钥了
二、解决方案:
1.查看ssh文件
在桌面 点击鼠标右键 (Git Bash here) 进入 .ssh 文件夹 如下图(注意空格):
ls 命令检查是否存在 SSH Key
出现上图说明我们之前的确已经生成过SSH密钥了
注意:如果没有该文件夹,自己 C 盘的 用户路径下 新建 .ssh 文件夹
2.删除之前的.ssh
3.分别生成gitee和github 的 SSH Key
(1)生成github的密钥,自定义其名称
1
ssh-keygen -t rsa -C "xxxxxxx@qq.com" -f "id_rsa_github"
(2)配置github的SSH key
输入自己的邮箱后一直回车,即可出现以下画面
(3)查看SSH Key
1
cat id_rsa_github.pub // 这里是查看 github的 SSH Key
出现下图:
(4)拷贝 ssh-rsa 开头的 ssh key,然后到github上添加ssh key
(5)配置gitee的 ssh key
操作和上面的类似,只是把命令换成了
1 | ssh-keygen -t rsa -C "xxxxxxx@qq.com" -f "id_rsa_gitee" //生成gitee的SSH Key |
- (6)然后把生成的 ssh key 复制到 gitee,进行添加 ssh key 操作,(操作类似上面的 github 添加 ssh)
4.添加 config解决ssh冲突
- 在 .ssh 文件夹路径下 ,执行命令:vi config
在这里面一个一个输入比较慢,所以先退出,先按键盘的 Esc,输入“ :wq ”,回车退出然后 C盘 的.shh 文件夹中 找到 并打开 config 文件,将下面的内容复制进 config 文件,保存即可
1 | # gitee |
5.测试
- 执行
ssh -T git@github.com
,出现successfully
,则github配置成功。 - 执行
ssh -T git@gitee.com
,出现successfully
,则gitee配置成功。
注意:
可能会出现下面的内容 (直接输入 yes 即可最终出现successfully
,配置成功)
The authenticity of host ‘gitee.com (212.64.63.190)’ can’t be established.
ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
Are you sure you want to continue connecting (yes/no/[fingerprint])