1、引发这个问题的情况
本媛开发,会经常性用到gitee & GitHub两个库
毕竟国内项目转战仓到gitee,
但是国外原框架还是GitHub居多
于是就出现连接pull-push经常性切换问题
这个报错是因为本地两个仓都有ssh公共私有密钥导致的
2、解决方案:
2.1首先排查问题:
2.1.1 是因为首次本地联通没有配置密钥,或者配置错误?
如果是因为第一次配置就错误了进行如下操作:
- 1、打开git-bash
注意如果切换了gitee到GitHub(或者从GitHub切换到gitee)记得重新设置用户名和邮箱
git config --global user.name "github 用户名"
git config --global user.email "github 邮箱名"
- 2、第一次设置pull本地仓的git要先增加ssh密钥
-- 添加ssh
ssh-keygen -t ed25519 -C "可以设置自己想要的密钥名字"
例如:
ssh-keygen -t ed25519 -C "AAA.github"
-- 值得注意的是第一次回车输入的还是要设置密钥文件的名字,如果不设置,默认用的是提示括号里的(id_XXX)作为密钥文件名字此处比较重要,后面要使用
第二次回车输入 密钥口令(要记住,以后每次切换或者登入连接需要使用)
第三次回车,是对第二次回车输入的命令的重复确认
- 3、配置好可以在C盘\当前登入用户账号下看到:名约.ssh文件
- 4.这个时候进入文件夹可以看到你上面用到的第二步中,例如的AAA.github文件名的两个文件:
- 5、然后用记事本打开名字为AAA.github.pub的文件,可以找到对应需要配置到网页GitHub账号中的数据
开头文件为ssh-(此图插入图片git-3)
-/6、紧接着到页面的gitee/github,找到我的设置/settings
截图以GitHub为例:
-
7、看到有ssh表示的标签里面进行新增一个ssh key 名字随便看自己,内容添加上面查看到的内容直接复制进去
内容添加是本文git-3步骤打开的文件信息 -
8、尝试配置添加ssh
ssh-agent -s
eval `ssh-agent -s`
---替换ssh key
ssh-add ~/.ssh/AAA.github
- 8、至此配置工作已经结束
2.1.2、下面进行多账号问题解决
多平台账号首先进行文件添加
在.ssh文件夹内添加一个文件config
记事本打开配置如下:
全文配置无需加引号
# User
Host gitee.com
HostName gitee.com
User gitee上面的用户名(设置的user_name)
PreferredAuthentications publickey
IdentityFile ~/.ssh/对应配置到gitee仓里ssh中创建的密钥本地文件的名字
Host github
HostName github.com
User GitHub上面的用户名(设置的user_name)
PreferredAuthentications publickey
IdentityFile ~/.ssh/对应配置到GitHub仓里ssh中创建的密钥本地文件的名字
ServerAliveInterval 300
ServerAliveCountMax 10
2.1.3 测试联通
我最后配置的GitHub的账号密码,所以测试连接Github
还是打开git-bash
输入:
如果当前设置的git -config账号是gitee的使用:
ssh -T git@gitee.com
如果当前设置的git -config账号是github的使用:
ssh -T git@github.com
此时输入2.1.1–>第二步中设置的密钥口令,提示如下表示成功连接,可以尽情使用git,clone、pull、push等功能了
2.2.1 还是已经配置过密钥,曾尝试服务器联通也通,之后再次连接报错?
就是在你pull代码发现报错:
unable to access ‘https://github.com/XXXXXX.git/’: OpenSSL SSL_connect: Connection was reset in connection to github.com:443
idea提示:
打开cmd,测试账号联通(输入"ssh -T git@github.com"):
2.2.1.1 报错提示 Could not open a connection to your authentication agent.报错问题:
就是说你没有连接启动啦,别慌:
2.2.1.2 报错提示 Could not open a connection to your authentication agent.解决方案:
执行这个:
ssh-agent -s
eval `ssh-agent -s`
2.2.1.3 报错提示 Permission denied (publickey).报错问题:
画中重点,就是标题的报错:没错:【git】git@github.com: Permission denied (publickey).报错问题
这个时候你可能是用心启动了电脑,或者上一次连接了gitee,这次使用的GitHub…
不重要,直接看
2.2.1.4 报错提示 Permission denied (publickey).解决方案:
执行如下命令:
ssh-agent -s
eval `ssh-agent -s`
ssh-add ~/.ssh/AAA.github
重新输入密钥口令,完美登入解决。
3、还有一种情况
并不是上面说的密钥没有设置或者密钥失去连接的问题。
可能你连接的都是对的,但是ssh默认连接时候时长的,也就是说不能一直进行联通状态,那么需要设置联通时长,即保证ssh自动获取联通状态:【git】关于windows系统git连接ssh设置经常断连问题
总结:
网上的东西,我只能说五花八门的,解决方案真的要自己总结整理备注,最重要的是自己测试通过的在发,不要没事CV update的东西就发会坑人的。
每天奋斗一点点,管他明天如何。一起加油~(没办法环境太卷了-_-|||)