git 无法进行项目推送的原因及解决方法
1、原因分析:
在Github for Windows默认的安装配置中,SSH的配置文件ssh_config中的“IdentityFile“与实际情况不相符。
a、查看SSH配置文件ssh_config,
路径为:C:\Users\xxx\AppData\Local\GitHub\PortableGit_6d98349f44ba975cf6c762a720f8259a267ea445\etc\ssh
b、密匙文件的存放路径:
C:\Users\xxx\.ssh
/*xxx表示本机用户名*/
查看SSH的配置文件ssh_config,发现其中的“IdentityFile”这项信息的内容是“~/.ssh/github_rsa”而实际上,通过命令“ssh-keygen”生成的新的SSH密匙的全路径名为:“~/.ssh/id_rsa”和“~/.ssh/id_rsa.pub”。
如上所述,SSH的的配置文件ssh_config中的“IdentityFile”项的值与实际新创建的密匙全路径名不相符,结果导致本地的SSH工具无法找到到正确的密匙,进而无法同已经上传到Github密匙相匹配,结果就出现了“Permission denied (publickey)”这样的错误。
2、解决方法:
1、重装Github for windows
重装后的密匙文件的存放路径(C:\Users\Administrator\.ssh)下,有四个密匙文件,分别是github_rsa和github_rsa.pub,id_rsa和id_rsa.pub,
这样,用户就不用自己新建密匙文件了,只用将“github_rsa.pub”中的内容上传到Github网站的个人SSH管理中即可。
2、手动修改SSH的配置文件ssh_config中的“IdentityFile”字段。
在生成新的密匙文件后,若新生成的密匙文件名字为“id_rsa”,则将ssh_config配置文件中的“IdentityFile”项的值改为“~/.ssh/id_rsa”
3、手动修改新生成的密钥文件名。
将新生成的密匙文件名字改为“github_rsa”,从而与ssh_config配置文件中的“IdentityFile”项的值相同。