如何设置TortoiseGit使用SSH无需密码验证

19

我在使用git/tortoisegit时遇到了麻烦,无法使用我提供的ssh密钥(使用PuttyGen创建)。在命令提示符中,我遇到了permission denied错误,在TortoiseGit UI中我需要输入密码。我尝试了这个stackoverflow问题,但是如其所述,我是用PuttyGen创建的,已经加载了Pageant并配置为使用TortoisePlink。

然后,我找到了这个stackoverflow问题,尝试在git目录中使用ssh,在我的TortoiseHG中使用TortoisePlink(用于Bitbucket/Mercurial),并且如上所述,已经尝试使用本地TortoisePlink在TortoiseGit中进行配置。

哦,我确实在我的Git帐户和TortoiseGit的Git->Remote部分设置了我的ppk密钥。

那么,我错过了什么?

7个回答

15

检查你的源URL是什么。

右键单击项目文件夹 TortoiseGit -> 设置 -> 选择 Git -> 远程 并选择原始条目。

检查该URL是否以ssh://开头,并且你的私钥已加载。

如果URL以https://开头,则每次都会要求输入密码。

希望这可以帮到你。


这对我来说并不完全有效。实际上,我必须删除协议,即在URL中不包含https://ssh:// - beldaz
@beldaz:如果我尝试那样做(既不是https://也不是ssh://),就会得到*......似乎不是一个Git存储库的错误 致命错误:无法从远程存储库读取。 - O. R. Mapper
这个解决方案对我不起作用。我收到了以下消息:断开连接:没有可用的支持身份验证方法(服务器发送:publickey) - O. R. Mapper
@O.R.Mapper:不确定为什么会这样,很抱歉-我刚刚再次检查了我的设置,一切正常。我能想到的唯一可能是您没有设置Putty Key字段。或者您在其他地方设置了冲突的凭据...很抱歉无法提供更多帮助。 - beldaz
@beldaz:我认为这是由我同时在a separate answer中发现并描述的问题引起的。 - O. R. Mapper
显示剩余2条评论

5

一些Git服务器在身份验证方面有些反直觉(依我之见)。例如,Github 文档 上说:

所有连接都必须作为“git”用户进行。

因此,您不需要尝试连接到 ssh://<yourname>@github.com...,而是要连接到 ssh://git@github.com...

我不再需要输入密码,且 TortoiseGit 在完成 Push 操作后显示 Success


4
我无法在github/tortoisegit上使用此功能。但在Linux命令行上使用git可以正常工作。于是我按照这里的描述使用了我的用户名和密码:

http://www.programmoria.com/2012/02/saving-tortoisegit-password.html

还有其他地方也有类似解释。这并不是一个真正的解决方案(抱歉),而是一个实现相同效果的解决方法:自动身份验证,而无需输入用户名/密码。 _netrc文件与存储在计算机上的私钥一样安全/不安全,因此我认为这是可接受的解决方案。当然,欢迎对此发表评论。


1
我认为这并不像使用私钥文件那样安全,因为我可以用密码保护后者,并且没有明文可见。 - Martin Ender
SSH不是明文传输。而且,要求输入密码来打开私钥并不比直接使用密码更容易。 - DDS

1

您在OpenSSH服务器上的帐户是否知道您应该使用公钥进行授权?

使用PuTTyGen加载您的密钥。您将在“用于粘贴到OpenSSH authorized_keys文件中的公钥”下看到一个只读文本区域。复制其中的内容。

使用PuTTy通过SSH连接到SSH服务器。使用编辑器打开~/.ssh/authorized_keys文件,将复制的文本粘贴到新行中并保存。 ~/.ssh目录可能尚不存在。在这种情况下,请在编辑该文件之前执行mkdir ~/.ssh


1

我也在v1.8.4上遇到了同样的问题,然后我把我的ssh客户端切换到了plink,现在它运行得很好。

TortoiseGit设置 -> 网络 -> SSH客户端

plink与peagent和其他好东西一起分发在标准putty包中

显然,在某些版本的TortoiseGit(特别是TortoisePlink)中存在一个错误 见这个答案


通过使用plink,我收到了消息“致命错误:无法从远程存储库读取。请确保您具有正确的访问权限并且存储库存在。”(除非我误解了Github Web界面告诉我的内容,否则我对所有这些都很确定。) - O. R. Mapper

0

我正在使用git 2.7和tortoisegit 1.8.16 以下是我为避免需要密码所做的操作,对于我的情况起作用了

右键单击您的项目文件夹 TortoiseGit -> 设置 选择 Git -> 远程并选择原始条目 将url从https://github...更改为ssh://git@github...


0

使用Tortoise 2.2.0.0,需要进行几个步骤。在远程选项卡上,您可以删除已有的http(s)源,或者您需要添加第二个,使用ssh://并勾选“Push Default”复选框以便Tortoise默认使用它进行推送(对于我的情况,则为https起点进行拉取)。

只有ssh一个需要指定密钥,然后当您Push时,它应默认将新的ssh起点作为目标,无需询问您的用户名和密码。

显然您需要知道URL中要使用哪个用户。例如,在Visual Studio Team Services中,它是VSTS帐户的名称(而不是帐户持有人!)。 您可能还需要端口号。

这就是我从头开始设置所做的一切,一切都很好用。


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