一、问题
在使用TortoiseGit
与远程仓库进行同步代码的时候提示如下错误,即:没有支持认证的方法可用。而GitBash
却可以正常使用,不受影响。
通过调查,发现应该是TortoiseGit
远程仓库的公匙无法和本地的密匙进行匹配认证造成的(主要是TortoiseGit
缺少本地密匙)。由于TortoiseGit
的默认网络SSH client
是TortoiseGitPlink.exe
,如下图所示。因此主要有两种方式来解决该问题:
- 不修改
TortoiseGit
的默认网络SSH client
,此时需要为TortoiseGit
添加后缀为.ppk
的本地密匙。 - 修改
TortoiseGit
的默认网络SSH client
,使其与GitBash
的SSH
相同,即与GitBash
使用相同的密匙。
二、解决方案
1、方案一:为TortoiseGit
添加本地密匙
- 由于
TortoiseGit
默认是通过TortoiseGitPlink.exe
来进行公匙和密匙配对,因此它只能识别后缀为.ppk
的密匙。 - 该方式是通过
Pageant
来添加后缀为.ppk
的密匙,因此首先打开Pageant
,如下图 - 打开后将出现在右下角,点击查看已添加的
Keys
,如下图 - 打开可以看见密匙
Keys
列表里面为空,所以也就无法与服务器上的公匙进行匹配,自然也就会提示操作失败。如下图 - 点击
Add Key
来将本地生成的后缀名为.ppk
的密匙添加进去,就可以了,如下图
2、方案二:修改TortoiseGit
的默认网络SSH client
执行程序
- 由于
TortoiseGit
出现错误,而GitBash
可以正常使用,所以GitBash
的SSH
是正常的。在此将TortoiseGit
的SSH client
修改为GitBash
对应的SSH
程序。 - 修改成
GitBash
对应的SSH
程序后,TortoiseGit
与服务器上的公匙进行匹配的时候,就会使用和GitBash
同样的本地密匙id_rsa
,而不再需要后缀名为.ppk
的密匙了,也就无需再来借助其它工具(如PuTTYgen
)来将id_rsa
转换成对应后缀为.ppk
的密匙了。 - 具体方法为打开
TortoiseGit
的Settings
来进行设置,如下图: - 选择
Network
对应的SSH client
,如下图: - 选择
Git
的安装目录下对应的ssh.exe
文件即可,如下图所示:
另:
采用GortoiseGit方式clone失败之后,一定要先尝试用Git bash命令行试下,如果Git bash命令行可以,那就用上面的方法切换ssh。
如果Git bash也失败,那就要考虑更换下生成SSH密钥的加密算法类型再试试,例如采用RSA类型,而不是ED25519。
靠谱推荐:Free Pos,微信JOCIHEZ