github:没有支持的authentication方法可用

我使用github,并在我的笔记本电脑上成功添加和同步文件。

截至最近,我开始运行后“ PuTTY致命错误:断开连接:没有支持的身份validation方法 ”:

git pull起源大师(或推)

然而

ssh git@github.com返回正确的回应:错误:您好用户名! 您已经成功通过身份validation,但GitHub不提供closuresgithub.com的shell访问连接。

在github上挖掘我发现这个morcel:

没有支持的authentication方法可用您应该知道环境variablesGIT_SSH,如果ssh不适用于您,那么git将使用它来查找您的说ssh的客户端。 git安装可能使用plink.exe(通过GIT_SSH)来执行身份validation。 如果是这样,确保你有pageant.exe运行,并且你为github创build的密钥加载到它。 这提供了plink.exe的关键; 没有它,上述错误将会发生。

不知道什么plink.exe或peagant.exe是..以及ssh git@github.com似乎authentication正确的事实使我不知道这里最好的解决scheme是什么..我当然不想过分复杂我的设置,如果不必要。

你可以在你的主目录中创build一个名为“.profile”的文件,对我来说就是C:\ Users \ [user]

在该文件中,放入以下代码行:

GIT_SSH="/usr/bin/ssh.exe" 

这将设置GIT_SSH环境variables来使用git附带的ssh客户端。

当您启动Git Bash命令行时,.profile脚本会被执行。

编辑:这是我的.profile。 在你第一次启动git命令提示符时,它会询问你的密码,然后从那时起将记住它,直到你重新启动你的计算机。 非常方便,所以你不必每次都想input密码。

 SSH_ENV="$HOME/.ssh/environment" GIT_SSH="/usr/bin/ssh.exe" function start_agent { echo "Initializing new SSH agent..." /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}" echo succeeded chmod 600 "${SSH_ENV}" . "${SSH_ENV}" > /dev/null /usr/bin/ssh-add; } # Source SSH settings, if applicable if [ -f "${SSH_ENV}" ]; then . "${SSH_ENV}" > /dev/null #ps ${SSH_AGENT_PID} doesn't work under cygwin ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || { start_agent; } else start_agent; fi 

使用TortoiseGit

将TortoiseGit> Settings> Network> SSH Client设置为C:\Program Files (x86)\Git\bin\ssh.exeC:\Program Files\Git\usr\bin\ssh.exe

tortoisegit

“…不知道什么plink.exe或peagant.exe是…”

既然你问:plink&pageant是PuTTY套件的一部分,它是一个支持Linux和Windows的SSH实现,在Windows上完全占统治地位。

SSH

安全shell(SSH)是用于保护数据通信的encryptionnetworking协议。 它在客户端 – 服务器体系结构中的不安全networking上build立安全通道,将SSH客户端应用程序与SSH服务器相连接。 常见的应用包括远程命令行login,远程命令执行,但任何networking服务都可以通过SSH进行安全保护。

如果你曾经使用过Telnet,就像这样(但更安全):它允许你远程访问Linux主机的bash shell(命令行)。

油灰

PuTTY是一款免费的开源terminal仿真器,串口控制台和networking文件传输应用程序。 它支持多种networking协议,包括SCP,SSH,Telnet,rlogin …

在Windows上,它是在SSH协议(以上)下远程访问Linux主机命令行的主要软件。 在Windows中,.exe扩展名用于可执行文件。 所以这些有关plink.exe&pageant.exe的注释可能不适用于Linux 。 包括PuTTY

Plink :PuTTY后端的命令行界面

Pageant :PuTTY,PSCP,Plink的SSHauthentication代理

从( http://en.wikipedia.org/wiki/Secure_Shell#Key_management

当公共密钥存在于远程端时,并且本地端上存在匹配的私人密钥时,不再需要input密码…为了额外的安全性,私钥本身可以用密码locking。

所以github托pipe在Linux机器上,并使用SSH来保护连接。 SSH使用密码或密钥进行身份validation,许多主机(github?)只能使用密钥进行身份validation。 你设置显然是试图用密钥进行身份validation。 密钥和主机不是一对一的:对于相同的主机和/或两个主机可以有两个密钥用于同一个密钥,因此需要对它们进行pipe理。 如果您在Windows中,那么您的SSH会话可能通过plink访问,而您的密钥可能由Pageantpipe理。

每次载入Pageant时,导入您需要的密钥。 如果您遵循了“导入您的密钥”的指南,并看到它的工作,但现在不起作用,请参阅第9章:使用Pageant进行身份validation 。

最后一个提示,如果你在Windows上:你可能有不同的工具安装PuTTY套件的多个实例。 TortoiseGit,例如,安装它自己的。

我遇到过这个问题,因为我的GIT_SSH指向了Plink.exe的TortoiseSVN版本。 我改变它指向TortoiseGit版本,重新启动cmd,它的工作。

我记不清了,但TortoiseSVN版本可能是32位版本,而TortoiseGit版本是64位(位于Program Files ,而不是Program Files (x86) )。

仔细检查你的GIT_SSH env var。

我更喜欢使用正常的cmd.exe git(当然在Console2中)

我的问题是,我试图使用我的github用户名。 显然,当使用Github (或者它是一个Git的东西?) ,如果您使用基于密钥的身份validation,您需要将您的用户名设置为git

我不知道为什么你甚至需要一个用户名 – 也许更有知识的人可以解释这一点?

对于Windows上的TortoiseGit用户

最初,我曾经使用SSH存储库URL来设置我的大部分Github / Bitbucket存储 (最初),它曾经是防止TortoiseGit在每一个动作中提示input密码的唯一方便的方法。

但以这种方式设置TortoiseGit总是令人头痛的痛苦。 每次花费我几个小时才能正确设置,因为默认安装选项似乎从来没有工作(甚至到2016年,谢谢!)。

但是TortoiseGit现在对HTTPS有更好的密码pipe理,而Github实际上build议尽可能使用HTTPS URL

SSHurl: git@github.com:User/repo-name.git

HTTPSurl: https://github.com/User/repo-name.githttps://github.com/User/repo-name.git

HTTPS的好处是:

  • 不pipe理或生成SSH密钥
  • 无需持续运行pageant.exe (每次启动时都要求input密码)
  • 使用来自澳大利亚的TortoiseGit,我发现通过HTTPS的克隆比SSH快5-10倍

在我的Windows 7上使用git 1.8.3.msysgit.0运行Github for Windows。 我发现更新我的系统环境variablesGIT_SSH到C:\ Program Files文件(x86)\ Git \ bin \ ssh.exe似乎有伎俩。 这也解决了我与联系OpenShift的git repo的问题。

如果您使用的是Pageant,并且在重新启动您的PC(或以其他方式closures并重新开始)之后得到问题中所描述的错误:

这个错误可能是由于Pageant没有主动加载你的GitHub SSH密钥造成的。 默认情况下,Pageant在启动时不会自动加载前一个会话中的密钥。

加载密钥:

  1. 打开选美。 (在Windows上,如果Pageant正在运行,系统托盘中会有一个图标,双击它。)
  2. 点击Add Keybutton,继续添加你现有的GitHub SSH密钥。

为了避免将来出现这个问题,您可以将Pageantconfiguration为在启动时自动加载密钥。 (如果您的密码是密码保护的,则Pageant将自动提示您input密码。)

步骤来做到这一点(假设你已经有configuration为Windows启动时运行的Pageant):

  1. findWindows启动时用于运行Pageant的快捷方式。 (它可能在Startup文件夹中,可以通过Start> Run> shell:startup打开)
  2. 在快捷方式的“属性”对话框中,将SSH密钥文件的完整path和文件名附加到“目标”字段。

参考和全部细节: http : //blog.shvetsov.com/2010/03/making-pageant-automatically-load-keys.html

同样的错误,不同的解决scheme在这里指出 – 问题连接到Windows上的GitHub,即使通过PuTTY

我遇到了同样的问题,但是GIT_SSH解决scheme似乎为我工作了一次。 在电脑重新启动后,我意识到这是另一回事,因为我可以使用Git Bash或命令提示符克隆我的私有存储库,但不能在SublimeGit插件的Sublime Text 3中使用。 我的解决scheme很简单,实际上是@BlueRaja – Danny Pflughoeft提到,但我认为它可以使用一些方向;)

基本上你只需要编辑~/.ssh/config并确保用户名是git 。 您也可以告诉它为Github使用特定的SSH密钥 – My〜 ~/.ssh/config文件如下所示:

 Host gh Hostname github.com User git IdentityFile ~/.ssh/github_rsa.pub 

我有一个特定的关键Github由于我一天做的其他事情的数量,但如果你只有一个,那么它通常会~/.ssh/id_rsa.pub像Github在这里解释 。

我知道每个人都有一个不同的解决scheme,但我会留在这里为任何人可能遇到这个文章没有修复。 祝你好运!

你可以从这里获得plink&pageant: http : //www.chiark.greenend.org.uk/~sgtatham/putty/download.html

他们是腻子工具。

使用TortoiseGit从GitHub克隆版本库时出现这个错误。 通过点击“Load Putty Key”并在Git克隆对话框中select一个密钥文件(* .pkk)来修复。

在Windows 8上为我工作:GIT_SSHvariables指向plink.exe,在系统设置中将其更改为指向ssh二进制文件,并解决了问题。 要找出ssh的完整path,请运行:

 where ssh 

我得到了这个问题(直接ssh工作,但混帐拉失败),由于我的git远程不是我所想的那样。

是的,是的,我知道这是一个愚蠢的错误,但它发生,值得检查。

使用git remote -v