我使用github并在过去成功添加和同步了我的笔记本电脑上的文件.
截至最近,我开始在运行后收到" PuTTY致命错误:已断开连接:没有可用的支持身份验证方法 ":
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似乎正确验证的事实让我想知道这里最好的解决方案是什么..我当然不希望过度复杂我的设置如果不是必要.
你可以在你的主目录中创建一个名为".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
TortoiseGit>设置...网络... SSH客户端: C:\Program Files\Git\usr\bin\ssh.exe
位置我的变化.在它的一台电脑上C:\Program Files (x86)\Git\bin\ssh.exe
"...不确定plink.exe或peagant.exe是什么......"
因为你问:plink和pageant是PuTTY套件的一部分,PuTTY套件是支持Linux和Windows的SSH实现,在Windows上完全占主导地位.
SSH
Secure Shell(SSH)是一种用于保护数据通信的加密网络协议.它在客户端 - 服务器体系结构中的不安全网络上建立安全通道,将SSH客户端应用程序与SSH服务器连接.常见应用程序包括远程命令行登录,远程命令执行,但可以使用SSH保护任何网络服务.
如果你曾经使用过Telnet,它就像那样(但更安全):它允许你远程访问Linux主机的bash shell(命令行).
油灰
PuTTY是一个免费的开源终端仿真器,串行控制台和网络文件传输应用程序.它支持多种网络协议,包括SCP,SSH,Telnet,rlogin ......
在Windows上,它是在SSH协议下远程访问Linux主机命令行的主流软件(上图).在Windows中,.exe扩展名用于可执行文件.因此,如果你在Linux中,那些关于plink.exe和pageant.exe的注意事项可能不适用.PuTTY包括
Plink:PuTTY后端的命令行界面
Pageant:PuTTY,PSCP和Plink的SSH身份验证代理
来自(http://en.wikipedia.org/wiki/Secure_Shell#Key_management)
当公钥存在于远程端并且匹配的私钥存在于本端时,不再需要输入密码...为了额外的安全性,私钥本身可以用密码锁定.
所以github托管在Linux机器上并使用SSH来保护连接.SSH要么使用密码或密钥进行身份验证,许多主机(github?)只能使用密钥进行身份验证.您设置显然是尝试使用密钥进行身份验证.密钥和主机不是一对一的:您可以为同一主机使用两个密钥,也可以为同一个密钥使用两个主机,因此需要对它们进行管理.如果您在Windows中,那么您的SSH会话可能通过plink访问,您的密钥可能由Pageant管理.
每次加载Pageant时都需要导入所需的密钥.如果你按照指南"导入你的密钥",并看到它有效,但它现在不起作用,请参阅第9章:使用Pageant进行身份验证.
如果你在Windows上,最后一个提示:你可能有各种工具安装的PuTTY套件的多个实例.例如,TortoiseGit安装自己的.
我遇到了这个问题,因为我GIT_SSH
指的是TortoiseSVN版本Plink.exe
.我把它更改为指向TortoiseGit版本,重新启动cmd并且它工作正常.
我记不起来了,但TortoiseSVN版本可能是32位版本,而TortoiseGit版本是64位(位于Program Files
,而不是Program Files (x86)
).
仔细检查您的环境变化GIT_SSH
.
我更喜欢使用正常的git cmd.exe
(当然在Console2中)
对于Windows上的TortoiseGit用户
最初,我曾经使用SSH存储库URL设置我的大多数Github/Bitbucket存储库(原来)它曾经是防止TortoiseGit在每个操作上提示输入密码的唯一方便方法.
但是以这种方式设置TortoiseGit总是让人痛苦不堪.每次花费我几个小时才能正确设置,因为默认安装选项似乎永远不会起作用(即使截至2016年,sheesh!).
但TortoiseGit现在有更好的HTTPS密码管理,Github实际上建议尽可能使用HTTPS URL.
SSH URL:
git@github.com:User/repo-name.git
HTTPS网址:
https://github.com/User/repo-name.git
HTTPS的好处是:
无需管理或生成SSH密钥
无需pageant.exe
持续运行(每次启动都会请求密码)
使用来自澳大利亚的TortoiseGit,我发现HTTPS上的克隆比SSH快5-10倍
如果您正在使用Pageant,并且在重新引导PC(或关闭并重新打开Pageant)后出现问题中所述的错误,请执行以下操作:
该错误可能是由于Pageant没有积极加载您的GitHub SSH密钥引起的。 默认情况下,Pageant启动时不会自动从上一个会话中加载密钥。
加载密钥:
打开选美。(在Windows上,如果Pageant正在运行,它将在系统任务栏中带有一个图标。双击该图标。)
单击添加密钥按钮,然后继续添加现有的GitHub SSH密钥。
为了避免将来出现此问题,您可以将Pageant配置为在启动密钥时自动加载密钥。(如果您的密钥受密码保护,选美会自动提示您输入密码。)
执行此操作的步骤(假设您已经将Pageant配置为在Windows启动时运行):
查找Windows启动时Windows用于运行Pageant的快捷方式。(它可能在“启动”文件夹中,可以通过“开始”>“运行”>“”打开shell:startup
)
在快捷方式的“属性”对话框中,将SSH密钥文件的完整路径和文件名附加到“目标”字段。
参考和完整详细信息:http : //blog.shvetsov.com/2010/03/making-pageant-automatically-load-keys.html