github:没有可用的支持身份验证方法

时间:2010-08-07 17:11:03

标签: git ssh github msysgit

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

截至最近,我开始运行“ PuTTY Fatal Error:Disconnected:No supported authentication methods is ”:

git pull origin master(或推送)

然而

ssh git@github.com返回正确的回复: 错误:你好用户名!您已成功通过身份验证,但GitHub不提供shell访问权限 与github.com的连接已关闭。

在github上挖掘后,我发现了这个问题:

不支持可用的身份验证方法 您应该知道环境变量GIT_SSH,如果ssh不适合您,git使用它来查找ssh-speaking客户端。 git install可能正在使用plink.exe(通过GIT_SSH)来执行身份验证。如果是这样,请确保您运行了pageant.exe,并为github创建了为其加载的密钥。这为plink.exe提供了关键;没有它,会发生上述错误。

不确定plink.exe或peagant.exe是什么..而且ssh git@github.com似乎正确验证的事实让我想知道这里最好的解决方案是什么..我当然不想过度复杂化我的如果没有必要设置。

17 个答案:

答案 0 :(得分:93)

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

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

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

这将设置GIT_SSH环境变量以使用git中包含的ssh客户端。

启动Git Bash命令行时会执行.profile脚本。

编辑: 这是我的.profile。它会在您第一次启动git命令提示符时询问您的密码,然后从此开始记住它,直到您重新启动计算机。非常方便,因此您不必在每次想要做某事时都输入密码。

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

答案 1 :(得分:21)

使用TortoiseGit

TortoiseGit>设置...网络... SSH客户端:C:\Program Files\Git\usr\bin\ssh.exe

位置我的变化。在一台计算机上,它位于C:\Program Files (x86)\Git\bin\ssh.exe

tortoisegit

答案 2 :(得分:10)

  

“......不确定plink.exe或peagant.exe是什么......”

因为你问:plink& pageant是PuTTY套件的一部分,PuTTY套件是支持Linux和Linux的SSH实现。 Windows并且在Windows上占据主导地位。

SSH

  

Secure Shell(SSH)是一种用于保护的加密网络协议   数据通讯。它建立了一个不安全的安全通道   客户端 - 服务器体系结构中的网络,连接SSH客户端   应用程序与SSH服务器。常见应用包括远程   命令行登录,远程命令执行,但任何网络服务   可以用SSH保护。

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

<强> PuTTY

  

PuTTY是一个免费的开源终端模拟器,串行控制台和   网络文件传输应用程序它支持多个网络   协议,包括SCP,SSH,Telnet,rlogin ......

在Windows上,它是在SSH协议下远程访问Linux主机命令行的主流软件(上图)。在Windows中,.exe扩展名用于可执行文件。关于plink.exe&amp; pageant.exe可能don't apply if you're in Linux。 PuTTY包括

  

Plink :PuTTY后端的命令行界面

     

Pageant :PuTTY,PSCP和Plink的SSH身份验证代理

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

  

当远程端存在公钥并且匹配时   私钥存在于本端,输入密码为no   需要更长时间...为了额外的安全性,私钥本身可以   用密码来锁定。

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

每次加载Pageant时都需要导入所需的密钥。如果您按照说明“导入密钥”的指南,并看到它有效,但现在不起作用,请参阅Chapter 9: Using Pageant for authentication

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

答案 3 :(得分:8)

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

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

仔细检查GIT_SSH env var。

我更喜欢使用git和普通cmd.exe(当然在Console2中)

答案 4 :(得分:6)

适用于Windows上的TortoiseGit用户

最初,我曾经使用 SSH存储库URL 来设置我的大部分Github / Bitbucket存储库,因为它(以前)曾经是防止TortoiseGit在每个地方提示输入密码的唯一方便方法单一行动。

但是以这种方式设置TortoiseGit总是令人头疼。每次花费小时来正确设置,因为默认安装选项似乎永远不会起作用(即使截至2016年,sheesh!)。

但TortoiseGit现在可以更好地管理HTTPS,并尽可能 Github actually recommends using HTTPS URLs

  

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

     

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

HTTPS的好处是:

  • 无需管理或生成SSH密钥
  • 无需pageant.exe不断运行(每次启动都会请求密码)
  • 使用来自澳大利亚的TortoiseGit,我发现HTTPS上的克隆速度比SSH快5-10倍

答案 5 :(得分:4)

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

我不确定你为什么甚至需要一个用户名 - 或许知识渊博的人可以解释一下?

答案 6 :(得分:4)

如果你正在使用Pageant并在重新启动你的电脑后获得问题中描述的错误(或以其他方式关闭并重新开启Pageant):

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

加载密钥:

  1. Open Pageant。 (在Windows上,如果Pageant正在运行,它将在系统托盘中显示一个图标。双击它。)
  2. 单击“添加密钥”按钮,然后继续添加现有的GitHub SSH密钥。
  3. 为避免将来出现此问题,您可以将Pageant配置为在启动时自动加载密钥。 (如果您的密钥受密码保护,Pageant会自动提示您输入密码。)

    执行此操作的步骤(假设您已将Pageant配置为在Windows启动时运行):

    1. 查找Windows在Windows启动时用于运行Pageant的快捷方式。 (它可能位于Startup文件夹中,可以通过Start&gt; Run&gt; shell:startup打开)
    2. 在快捷方式的“属性”对话框中,将SSH密钥文件的完整路径和文件名附加到&#34; Target&#34;字段。
    3. 参考资料和完整详情:http://blog.shvetsov.com/2010/03/making-pageant-automatically-load-keys.html

答案 7 :(得分:2)

在我使用git版本1.8.3.msysgit.0运行Github for Windows的Windows 7计算机上。我发现将我的系统环境变量GIT_SSH更新为C:\ Program Files(x86)\ Git \ bin \ ssh.exe似乎可以解决问题。这也解决了我与联系OpenShift的git repo的问题。

答案 8 :(得分:1)

使用TortoiseGit从GitHub克隆存储库时出现此错误。通过单击“加载Putty键”并在Git克隆对话框中选择一个密钥文件(* .pkk)来修复。

答案 9 :(得分:1)

要解决此问题,这就是我所做的。

我在Windows 10上使用Git Bash

我启动了Pageant,按了Add键,

enter image description here

导航到C:\ Users \ username \ .ssh文件夹并选择我的密钥

enter image description here

然后我尝试进行git push,这一次成功了。

答案 10 :(得分:1)

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

where ssh

答案 11 :(得分:1)

我遇到了同样的问题,但GIT_SSH解决方案对我来说似乎有效。计算机重启后,我意识到这是其他的东西,因为我能够使用Git Bash或命令提示符克隆我的私有存储库,但没有使用SublimeGit插件的Sublime Text 3。我的解决方案很简单,实际上是@BlueRaja - Danny Pflughoeft提到的,但我认为它可以使用某个方向;)

基本上您只需要修改~/.ssh/config并确保用户名为git。您还可以告诉它为Github使用特定的SSH密钥 - 我的~/.ssh/config文件如下所示:

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

由于我一天中所做的其他事情的数量,我有一个特定的Github密钥,但是如果你只有一个,那么它通常是~/.ssh/id_rsa.pub,如Github explains here

我知道每个人都有不同的解决方案,但我会将此留给任何可能在没有修复的情况下遇到这篇文章的人。祝你好运!

答案 12 :(得分:1)

同样的错误,这里注明了不同的解决方案 - Problem connecting to GitHub on Windows, even via PuTTY

答案 13 :(得分:0)

你可以得到plink&amp;来自这里的选美:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

它们是PuTTY工具。

答案 14 :(得分:0)

我遇到了这个问题(直接ssh工作,但是git pull失败了),因为我的git远程不是我想象的那样。

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

使用git remote -v

答案 15 :(得分:0)

将GitExtensions更新到版本3.3.0.7719后,我遇到了类似的问题

它以某种方式将我的身份验证设置还原为使用PuTTY而不是OpenSSH。

在该版本中,这是我用来再次启用OpenSSH的菜单:

enter image description here

答案 16 :(得分:0)

在 Windows 10 中,如果您进行了包括 Putty 的典型安装,则上述解决方案都不适合我,我必须进入控制面板,特别是系统变量,将 GIT_SSH 更改为 D:\Program Files\Git\ usr\bin\ssh.exe 那里(它链接到 plink.exe 并且没有修改 .profile 或任何说服它改变它的东西,只编辑系统变量)。