无法从Sourcetree拉取Git远程仓库

76

我生成了SSH密钥并配置了我的Git和SourceTree。我可以从Git-bash执行git pull和其他操作。 注意:我已经在.bashrc中添加了以下内容以使其正常工作。

eval `ssh-agent`
ssh-add

然而,当我在SourceTree中尝试git pull时,出现以下情况。

git -c diff.mnemonicprefix=false -c core.quotepath=false fetch origin Permission denied (publickey,password). fatal: Could not read from remote repository.

请确保您拥有正确的访问权限并且存储库存在。

当我尝试从Putty(Windows)创建ssh密钥时,它会继续进行,但会等待以下消息!

git -c diff.mnemonicprefix=false -c core.quotepath=false fetch origin The server's host key is not cached in the registry. You have no guarantee that the server is the computer you think it is. The server's rsa2 key fingerprint is:

ssh-rsa 2048 0f:ee:bb:1c:6c:b4:50:0e:54:d6:e9:55:9b:38:45:df 如果您信任此主机,请输入“y”将密钥添加到PuTTY的缓存并继续连接。如果您想仅连接一次而无需将密钥添加到缓存,请输入“n”。如果您不信任此主机,请按Enter键放弃连接。

如果我在SourceTree中打开终端(即git-bash),它会要求我输入密码。因此,我怀疑我的.bashrc没有被SourceTree加载。或者我还遗漏了什么吗?

7个回答

158

我将客户端配置从putty更改为openssh

转至:菜单工具 > 选项 > SSH客户端

输入图像描述


参与了 SourceTree v1.8.2.11 的开发。 - AlikElzin-kilaka
1
谢谢。 (win7 64位,sourcetree v1.8.2.11,ssh) - Hun
2
谢谢 :D win10 64位,1.8.3 - Enrico Bottani
这对我很有效。如果您的计算机上已经有一个可用的git命令行和一个可用的私钥以进行无密码操作,那么这可能是您需要做的。 - Derek
1
谢谢!我已经处理了几周了...它在终端中可以工作,但在Sourcetree中不行。因此,我会使用Sourcetree进行添加和提交,但然后我会去终端执行推送、拉取和获取命令。现在看起来我将能够在GUI中完成所有操作。 - Ryan Tensmeyer
显示剩余4条评论

99

我曾经遇到过同样的问题,我的解决方案是手动使用 plink.exe 连接服务器(GitLab):

"C:\Program Files (x86)\Atlassian\SourceTree\tools\putty\plink.exe" gitlab.com

当被问及时,请按下y,你现在应该没问题了!


1
它要求登录和密码。该怎么办?我使用RSA密钥。 - May12
7
@May12:在这个阶段不需要密码。只需输入“y”将密钥存储在缓存中。然后返回到SourceTree,您就不应该再看到错误了。 - SaeX
2
谢谢!!!如果 SourceTree 不能自己做到这一点,或者弹出一个屏幕来询问,那就知道为什么会很好!!! - tyoc213
2
工作得很好,我还有一个特定的端口需要使用“-P”选项进行设置。 - Mårten
1
在我的情况下,服务器要求我进行身份验证,但不接受私钥... - Azimuth
显示剩余2条评论

15

我通过将SSH提供程序从“Putty/Plink”更改为“OpenSSH”来解决了这个问题。

Menu Tools > Options then SSHClient, select OpenSSH

5

值得注意的是,您可以直接启动Putty UI,在主机名中键入github.combitbucket.org或其他您的存储库名称,然后您将获得上面的屏幕截图。 - wal

1

截至2022年6月28日,gitlab.com存在一个bug,使用plink / ssh时会失败。

解决方法是在putty配置中为gitlab.com设置“winadj”错误修复设置。

下面的图像显示屏幕上“Chokes on winadj”被设置为“On”而不是“Auto”。这样可以解决问题。

enter image description here


0
我在我的机器上使用最新的Source Tree版本遇到了同样的问题。 唯一帮助我的方法是打开命令提示符(不是Power Shell)并执行以下代码行。
我的Source Tree安装在AppData而不是ProgramFiles下 - 检查您的SourceTree应用程序安装路径。
"C:\Users{username}\AppData\Local\SourceTree\app-3.4.15\tools\putty\plink.exe" bitbucket.org
您将收到以下提示信息
在缓存中存储密钥?(y/n,按Enter取消连接,按i获取更多信息)y
输入y
之后,您将被提示输入(bitbucket或gitlab)凭据 - 您可以忽略它。

0

这很复杂,但你可以去注册处

\HKEY_USERS\S-1-5-21-1530211238-4060388584-3209713061-1001\SOFTWARE\SimonTatham\PuTTY\SshHostKeys并添加类似于rsa2@2222:127.0.0.1的REG_SZ和来自错误的服务器指纹,如0x10001,0xc10790789c2f8aa97d79cbaebd1445863f6db3bb4e04236de1c3ab60e271a20da10ebc87f931a71e090a3b847cde28d0a751222f91a5c7a7f13f7d3bfa42d40b2c58a85c0667eb879b092d04706ccc6d2ec51c2ae77c08e51b2bbad425fefaf27a4e9253240809babc02e5ee93c167825311f38b15947034211db2bc50a76bd87a5f2542d30c0a09e35750ba36008aee3031efbec188fdfc8b39be3db0e01ee2ab95909e423e00c89e3da6a2bec9eed6f21dfffee9deceb5b560a5a6fa720059229e6c37a1952a4981d62fc62af2b6318057d758124c34644b6f771ab02b398043e1b5727ed22b199e943e467d0bb4b96c4689ca749cc9edb8bee028dcb9b6ef

根据目前的写法,你的回答不够清晰。请编辑以添加更多细节,帮助其他人理解这如何回答所提出的问题。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community

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