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)
在这里插入图片pic描述
-/6、紧接着到页面的gitee/github,找到我的设置/settings
截图以GitHub为例:pic-2

  • 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的东西就发会坑人的。
每天奋斗一点点,管他明天如何。一起加油~(没办法环境太卷了-_-|||)

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐