问题描述
现象
使用TortoiseGit(小乌龟)时,Push到origin时可能会出现错误:
Please make sure you have the correct access rights and the repository exists.
而在使用git bash时,Push到origin没有问题,也不需要手动输入密码。
原因
TortoiseGit(小乌龟)使用.ppk文件作为密钥,称为Putty Key,可以用在bash中生成的私钥文件id_rsa文件转换而来。
使用git bash时,Push可以通过ssh认证正常推送,证明id_rsa文件已生成,github上的远程仓库也粘贴了认证信息。
必定是TortoiseGit(小乌龟)的设置出了问题,具体应该是远端设置出了问题。
解决方案
1. 全部重新生成
此方法为重新生成密钥,把.ppk文件和id_rsa及配套设置全都设置一遍:移步小乌龟(TortoiseGit)配置SSH
2.仅改动TortoiseGit(小乌龟)的远程设置
使用现有的私钥,不希望改动私钥id_rsa(如有其他shell认证的工具使用了此密钥),仅改动TortoiseGit(小乌龟)的远程设置。以下为win10环境。
- 2.1. 在项目目录下右击->T->S,打开设置如 图1 TortoiseGit远程设置 所示;鼠标逐层展开Git->远端;逐个填写完成即可(填写说明见2.2-2.3)。
- 2.2 其中A和B处都填写与origin对应的远端地址,可以在自己的github远程仓库的绿色“Code”按钮处复制过来。(upstream的所有设置与origin相似)
- 2.3 其中C处需要使用PuTTYgen.exe工具,图标如图2所示。
- 打开工具后显示No key.
- 2.4. 确定自己的.ssh目录下有id_rsa文件(如不存在转windows下生成github ssh key详解)。其中.ssh目录通常为“C:\Users\[USERNAME]\.ssh”即“%USERPROFILE%\.ssh”。
- 2.5. 用PuTTYgen.exe工具将id_rsa转化为.ppk文件,步骤如图3所示。中间Import key的时候,选择id_rsa文件,之后的转化过程需要耐心等待。按图示填好后,按Save private key按钮,保存一个.ppd文件(如1.ppk),回到步骤2.1.在Putty 密钥处选择保存的.ppk文件,保存设置即可。
注意:在按Save private key按钮前确保id_rsa的bit数与填写的值一致。通常id_rsa较长的时候填写1024,id_rsa较短的时候填写2048。也可以两个情况分别尝试一次。