突然在向GitHub推送时出现“没有支持的身份验证方法可用”的错误信息

69

我几周前开始了一个GitHub项目。我能够毫无问题地推送更改(我使用TortoiseGIT)。

但今天突然在尝试推送我的更改时,出现了 "PuTTY致命错误" "断开连接:没有可用的支持身份验证方法" 的错误提示窗口。

您有什么推荐的解决方法吗?


相关链接:https://dev59.com/CnA75IYBdhLWcg3wK14p - BlueRaja - Danny Pflughoeft
17个回答

144

当我使用TortoiseGit时,我在针对远程仓库执行操作时遇到了问题,但是通过CMD / GitBash没有任何问题。

所以我做的很简单: 我打开了 TortoiseGit-->设置 --> 网络,在SSH客户端中,将其更改为"C:\Program Files\Git\usr\bin\ssh.exe",而不是"TortoiseGitPlink.exe"。


7
ssh.exe在哪里? - T.Todua
23
C:\Program Files\Git\usr\bin\ssh.exe 翻译为英文是:C:\Program Files\Git\usr\bin\ssh.exe - Shahar Hamuzim Rajuan
2
C:\Users\USER_NAME\AppData\Local\Programs\Git\usr\bin\ssh.exe 是我的位置。 - NDEthos
你两次救了我!我还爱你)) - undefined

17

请确保您已经安装了带有OpenSSH的TortoiseGit,并且使用了SSH身份验证方法。如果您使用Putty安装,则可能在系统托盘中有一个名为“Putty Pageant”的“计算机符号”。


7
请确保选美比赛有您的密钥(如果没有,请点击“添加密钥”并选择您的密钥文件)。 - ripper234

16

针对Windows中的TortoiseGit用户
(正如我在这个问题中最初发布的)

过去我通常使用SSH仓库URL来设置我的Github/Bitbucket仓库,因为(原来)这是防止TortoiseGit在每个操作时提示输入密码的唯一方便方法。

但是以这种方式设置TortoiseGit总是让人头疼。每次花费我数小时才能正确设置,因为即使到2016年,其默认安装选项似乎也从未奏效(真是受够了!)。

但是现在TortoiseGit针对HTTPS有更好的密码管理功能,而Github实际上推荐尽可能使用HTTPS URL

SSH URL: git@github.com:User/repo-name.git

HTTPS URL: https://github.com/User/repo-name.git

HTTPS的好处是:

  • 无需管理或生成SSH密钥
  • 无需长时间运行 pageant.exe(每次启动时都请求密码)
  • 来自澳大利亚的TortoiseGit克隆HTTPS速度比SSH快5-10倍

1
在URL中使用gitlab.com,同样适用于gitlab.com。 - Popnoodles

13

在我的情况下,Tortoise Git 丢失了 PuttyKey。因此,我不得不进入 TortoiseGit 设置 > Git > 远程 部分,并在该部分单击远程 框架中的 origin,发现 PuttyK Key 没有被设置(之前已经设置过)。我必须重新设置它。


1
在TortoiseGit更新到最新版本后,我也遇到了相同的问题。不过这个方法解决了我的问题,谢谢。 - Paul Suart

11
我通过将私钥添加到Pageant中来修复了这个错误。我在密钥创建期间忘记执行此操作,一旦我添加了它,就不再收到错误提示了。

这就是我TortoiseGit的问题所在。 - Nikolay Kostov

10
为了解决这个问题,我不得不手动从开始菜单运行Pageant:

图片描述

之后,我在系统托盘中看到了pageant:

图片描述

我可以添加我的密钥。通常,密钥存储在%userprofile%\.ssh中。

8
我明白了 - 这是因为我在项目开始后重新安装了TortoiseGIT。拉取操作顺利进行,但当我尝试将更改推回时,TortoiseGIT需要我的身份验证密钥,但该密钥未被配置。

编辑

要解决此问题,我只需清除TortoiseGit中的所有身份验证数据,具体方法如下: 右键单击菜单 "Tortoise Git" -> 设置 -> 保存的数据 -> 身份验证数据 [清除]


1
我该如何获取认证密钥? - Rodrigo Souza
1
@RodrigoAlves - 很抱歉直到现在才注意到您的评论。也许这已经不相关了,但无论如何,密钥是您磁盘上的一个文件...您应该始终知道它在哪里/备份它。您不需要从TortoiseGit中提取它。如果某种方式仍然相关,请提出单独的问题。 - ripper234
1
对我来说,这种情况发生在我更新过期的RSA密钥证书之后。无论这些步骤看起来多么有希望,都没有对我起作用。仍在寻找答案... - Nick

4

[WINDOWS] [同一问题发生在安装TORTOISE SVN之后安装GIT(1)的情况下]
(1)指的是Git开发社区版而不是TortoiseGit。

在git bash中:

    echo $GIT_SSH

正在赋值

    GIT_SSH=C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe

感谢 Răzvan Flavius Panda 和 Shahar Hamuzim Rajuan (上面)。

我需要更改 Windows 系统环境变量 中 GIT_SSH 的值,从

from   C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe
to     C:\Program Files\Git\usr\bin\ssh.exe

之前,我曾在Git Bash中成功输入以下命令:

    export GIT_SSH='C:\Program Files\Git\usr\bin\ssh.exe'

所以我们可以在 C:\Program Files\Git\etc\bash.bashrc 中添加这行内容以使更改成为永久的。 请注意,修改 C:\Program Files\Git\setup.ini 中的 GIT_SSH 会失败。


1
对我来说,在升级GIT到2.8.0后,我遇到了这个错误。问题是由于bash错误地读取了$HOME目录,并默认为位于Windows安装文件夹下的某个系统位置:/c/Windows/system32/config/systemprofile
事实证明需要进行一些环境变量清理。很久以前,我安装了一个GIT版本(大约1.7.x),它在系统环境变量中创建了一个HOME变量。由于某种行为上的更改,升级到2.8.0后需要删除此变量,而不是添加进一步的HOME用户环境变量。

1
在我的案例中,当我取消勾选并重新勾选AutoloadPutty键时问题得到了解决。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接