Git Bash
原因分析:在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)”这样的错误。
解决方法: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”项的值相同。
此方法同样适用于向bitbucket上推送代码。