运行git push时出错,提示Permission denied (publickey)

本文转载自博客园博主“王老头”的文章《Permission denied(publickey). fatal: Could not read from remote repository.》

 

 

    错误:  在终端(terminal)下

                      执行git clone [email protected]:accountName/repository.git命令时不出错,

                      运行git push时出错,提示如下

                      Permission denied(publickey).

                      fatal: Could not read from remote repository.

                      Please make sure you have the correct access rights and the repository exists.

 

    原因:  可能是没有与github上的账号成功建立密钥对。

 

    解决: 

                  【1】ssh-keygen -t rsa -C "[email protected]"

                            注意,上述[email protected]是指github账户的注册邮箱

补充说明:ssh-keygen命令用于为“ssh”生成、管理和转换认证密钥,它支持RSA和DSA两种认证密钥。本步骤使用ssh-keygen命令创建一个密钥,并指定密钥类型为rsa。在生成密钥前会先询问密钥存储路径和密码。CentOS 7系统下默认的密钥存储路径为<~/.ssh/id_rsa>,windows系统下默认的密钥存储路径为。当然也可以自定义路径。在第【4】步中会用到密钥存储路径。

运行git push时出错,提示Permission denied (publickey)_第1张图片 图1. ssh-keygen生成密钥的命令(windows系统下运行的,仅为说明用。全文是基于CentOS 7下遇到和解决的问题)

 

                  【2】ssh -v [email protected]

                            上述命令执行后,出现的提示最后两句是

                                  No more authentication methods to try.

                                  Permission denied (publickey).

                  【3】ssh-agent  -s

                            上述命令执行后,出现的提示最后两句是

                                  SSH_AUTH_SOCK=/tmp/ssh-GTpABX1a05qH/agent.404; export SSH_AUTH_SOCK;

                                  SSH_AGENT_PID=13144; export SSH_AGENT_PID;

                                  echo Agent pid 13144;

                  【4】ssh-add ~/.ssh/id_rsa  

                            上述命令执行后,出现提示

                                  Identity added: . . . (这里是一些ssh key 文件路径)

                                  Could not open a connection to your authentication agent.

补充说明:ssh-add用于是把专用密钥添加到ssh-agent的高速缓存中。本文遇到和解决问题都是在CentOS 7系统下,所以本步骤中密钥存储位置为<~/.ssh/id_rsa>如果在第【1】步创建密钥时自定义了密钥存储路径,或默认路径不是<~/.ssh/id_rsa>,则应该作相应修改。

例如,图1所示windows系统下创建的密钥,存储在,则此步骤中执行的命令应该相应改为ssh-add /c/Users/may/.ssh/id_rsa

在此,特别感谢CSDN网友易水轻寒在本文评论中的指正。

 

                  【5】若【4】中出现上述提示,则执行此步骤,否则执行【6】

                           eval `ssh-agent  -s`       回车

                           ssh-add ~/.ssh/id_rsa        回车

                  【6】cat  ~/.ssh/id_rsa.pub   (也可以用其他方式打开)  

                            上述命令执行后id_rsa.pub文件内容将输出到终端,复制里面的密钥(内容一般是以ssh-rsa 开头,以github账号的注册邮箱结尾的,全部复制下来)

                  【7】进入github账号,在settings下,选SSH and GPG keys, 点击new SSH key

运行git push时出错,提示Permission denied (publickey)_第2张图片

图2. 添加密钥

 

                           点击new SSH key后,在title栏里自定义名字,然后将上一步复制的密钥(以ssh-rsa 开头,以github账号的注册邮箱结尾的)粘贴到此处。

                           然后点击Add SSH Key

                  【8】ssh -T [email protected]      回车

                            提示: Hi ---! You've successfully authenticated, but GitHub does not provide shell access.

                        

 

你可能感兴趣的:(git)