人生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。

一、现象

二、原因分析

Permission denied (publickey) 没有权限的publickey ,出现这错误一般是以下两种原因

    • 客户端与服务端未生成 ssh key
    • 客户端与服务端的ssh key不匹配

三、解决办法

我们新生成一个ssh key就可以了

依次执行如下命令

1、打开git bash,

右击桌面空白处,选择【git bash】

 

 

 2、进入ssh 路径下

cd ~/.ssh

3、生成新的ssh key

输入如下命令,youremail@example.com改为自己的邮箱

ssh-keygen -t rsa -C "youremail@example.com"

然后回车,途中会让你选择生成的ssh key的存放目录和输入密码,不用管,直接回车。

这里有个坑,需要把原来生成的ssh key文件删除,否则不会生成新key的时候,会报文件已存在而导致无法生成新的key。一般ssh key的文件路径都是【C:\Users\username\.ssh\id_rsa】,其中username是你这个用户的用户名。如果没找到,可以先执行如下命令,回车后,系统会告诉你路径。

 

 

 

4、执行命令

ssh -v git@github.com

最后会出现

git@github.com: Permission denied (publickey).

 

5、执行命令

ssh-agent -s

知识点:

ssh-agent的角色就是帮忙存储、查找并发送对应的指纹而已,也就是说它是一个连接的转发人,扮演的是一个代理的角色。

使用ssh-agent后,可以通过ssh-add命令向ssh-agent注册本机的私钥,ssh-agent会自动推导出这个私钥的指纹(实际上是ssh-add计算的)保存在自己的小本本里(内存),以后只要ssh连接某主机(某用户),将自动转发给ssh-agent,ssh-agent将自动从它的小本本里查找私钥的指纹并将其发送给服务端(sshd端)。如此一来,ssh客户端就无需再指定使用哪个私钥文件去连接。

 

6、将新生成的ssh key添加到ssh-agent

ssh-add ~/.ssh/id_rsa

坑:

如果这时出现【Could not open a connection to your authentication agent.】

则先执行下【eval `ssh-agent -s`】,再执行【ssh-add ~/.ssh/id_rsa】就可以了

 

 

 

7、创建ssh key

打开刚刚生成的id_rsa.pub文件,复制里面的内容

进入你的github账号:https://github.com/settings/keys

settings→SSH and GPG keys→new SSH key,

 

 

 

title随便取一个名字,然后将id_rsa.pub里的内容复制到Key中,完成后Add SSH Key。

 

 

 坑:

如果添加key失败,提示【Key is invalid. You must supply a key in OpenSSH public key format】格式错误。

则在bash下执行命令【cat id_rsa.pub】然后复制key,再去github上添加

 

 

 

 

 

 8、验证

ssh git@github.com

成功了

 

9、再次执行git get,成功了

 

 

 

posted on 2021-10-13 11:26  测试开发喵  阅读(1952)  评论(0编辑  收藏  举报