Git克隆/拉取持续冻结在“将密钥存储在缓存中吗?”


159

我正在尝试从BitBucket帐户向Windows 10便携式计算机(运行GitBash)克隆存储库。我已经完成了连接所需的所有步骤(设置我的SSH密钥,并通过成功SSHing git@bitbucket.org等进行了验证)。但是,每当我尝试克隆存储库时,在确认我要缓存Bitbucket的密钥后,提示就会不断挂断。

User@Laptop MINGW64 /C/Repos
$ git clone git@bitbucket.org:mygbid/test.git
Cloning into 'test'...
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 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40
If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
connection.
Store key in cache? (y/n) y

没有文件被克隆,结果是一个空的仓库。尝试从此存储库启动git pull origin master也会要求缓存密钥,然后挂起而没有任何反馈。尽管在执行测试SSH时不要求密钥被缓存,但是git操作总是每次都要求密钥在失败之前。

没有可用的错误消息,我对什么地方出了问题真是茫然。我尝试了多个存储库,包括很小的存储库,但都没有成功。

Answers:


188

在Windows 10上克隆存储库时也遇到了这个问题。

我通过使用Putty GUI将SSH SSH到有问题的服务器(在您的情况下为:bitbucket.org)来解决该问题,然后在提示询问您是否要将服务器密钥保存到缓存时单击“是”。再次运行clone命令对我有用!


20
这并不能直接为我解决它,但使我意识到问题与使用Putty而不是OpenSSH进行Putty身份验证的GitBash有关。当我删除GIT_SSH系统变量并重置GitBash时,一切正常。谢谢!
MarathonStudios 2015年

2
使用在缓存中putty添加github密钥对我
橡树

4
这在Win 7上使用命令控制台为我工作。我希望有人能告诉我为什么会这样,而不仅仅是解决方法。
soulsabr '16

1
谁能说出上述解决方案的
做法

2
@Shreyan Mehta只需在主机名下粘贴git@github.com(或您使用的任何主机),即可打开腻子。确保选择SSH的连接类型。端口号应为22。启动此端口之前,也请确保已将ssh密钥加载到pageant中。
看不见的先生”,

110
  1. 腻子
  2. 输入主机名(如bitbucket.org
  3. 点击打开
  4. 在弹出窗口中单击“是”以缓存主机密钥
  5. 封闭腻子

我有同样的问题。查看git的输出,看来git无法缓存主机密钥(可能是一个错误)。因此,您必须使用PuTTY GUI进行操作。
好客的2016年

我尝试了所有步骤,但是当我选择'y'或'n'时,没有任何障碍Git Bash不会执行任何操作
testsingh

您在步骤2中输入了正确的主机名吗?您是否尝试过重新启动Git Bash?
好客的

1
这与接受的答案有何不同?
zb226 '17

1
我投票赞成这个答案,因为它提供了步骤。我不喜欢这是一种解决方法(您必须为连接的每个SSH服务器重复此操作),就像接受的答案一样。
ShooShoSha

26

要从Powershell执行此操作,请打开Powershell窗口并粘贴以下内容:

echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh git@github.com
echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh git@gist.github.com
echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh git@bitbucket.org

或使用PuTTY独立版本:

echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh git@github.com
echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh git@gist.github.com
echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh git@bitbucket.org

还应该知道的是,腻子在注册表项下存储已知主机

HKEY_CURRENT_USER\SoftWare\SimonTatham\PuTTY\SshHostKeys

要简化上述操作,您可以将以下内容放入.reg文件中并运行:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\SshHostKeys]
"rsa2@22:github.com"="0x23,0xab603b8511a67679bdb540db3bd2034b004ae936d06be3d760f08fcbaadb4eb4edc3b3c791c70aae9a74c95869e4774421c2abea92e554305f38b5fd414b3208e574c337e320936518462c7652c98b31e16e7da6523bd200742a6444d83fcd5e1732d03673c7b7811555487b55f0c4494f3829ece60f94255a95cb9af537d7fc8c7fe49ef318474ef2920992052265b0a06ea66d4a167fd9f3a48a1a4a307ec1eaaa5149a969a6ac5d56a5ef627e517d81fb644f5b745c4f478ecd082a9492f744aad326f76c8c4dc9100bc6ab79461d2657cb6f06dec92e6b64a6562ff0e32084ea06ce0ea9d35a583bfb00bad38c9d19703c549892e5aa78dc95e250514069"
"rsa2@22:gist.github.com"="0x23,0xab603b8511a67679bdb540db3bd2034b004ae936d06be3d760f08fcbaadb4eb4edc3b3c791c70aae9a74c95869e4774421c2abea92e554305f38b5fd414b3208e574c337e320936518462c7652c98b31e16e7da6523bd200742a6444d83fcd5e1732d03673c7b7811555487b55f0c4494f3829ece60f94255a95cb9af537d7fc8c7fe49ef318474ef2920992052265b0a06ea66d4a167fd9f3a48a1a4a307ec1eaaa5149a969a6ac5d56a5ef627e517d81fb644f5b745c4f478ecd082a9492f744aad326f76c8c4dc9100bc6ab79461d2657cb6f06dec92e6b64a6562ff0e32084ea06ce0ea9d35a583bfb00bad38c9d19703c549892e5aa78dc95e250514069"
"rsa2@22:bitbucket.org"="0x23,0xb9b88df3578371a7eb80c78bcda14fb30da436f11ca932a5fd5a8b6adfcc681df7a59cb4cb7ac966d9eac11daa38ebdbc0a6582a210ed4ee95a8d101c4abc925e942ab47535d64f9a5b3b68035c2ea1e900d709a1e8ea938718f532f9805a190446b92bac3040126225ae9d8374bc2008f106979d631734c7453f78c70091f4783b288869cb3c1941a784cd9baad823be27333833dc1f488a45b85952be75cf0a64965662302e3915378dcd5cfcd3ec903d804a29dff2fdf19df5deba4534b09e4dea6e44f152e339b3c43be98ddadfc56533192e216a3d673f00b4aa9cc9e7870acd8b6adb7e0feb77f2292fc2dede94819def3eb1e785541a06ab31ccf725f"

putty-hosts.reg要点


2
参见前面的问题,并回答有关砰砰这方面:serverfault.com/questions/420526/...
约瑟普·罗丹

2
FATAL ERROR: Disconnected: No supported authentication methods available (server sent: publickey)
方位角

如果您的遥控器在22以外的端口上运行,则需要通过向其传递-P <port>参数来与该端口运行plink 。
PitaJ '19

20

我设法通过直接运行plink使其运行,在选美运行之后,直接使用plink命令- plink.exe -agent -v git@github.com然后在此git正常运行后不挂起。


3
不错的解决方案!这应该被标记为答案
ZenithS

这是最好的答案。
Brian Lacy

5

要解决此问题,我将GitBash配置为使用带-batch选项的plink 。该选项禁用所有提示-plink将终止而不会挂起,并且不会在缓存中添加任何关键指纹。

要将-batch参数添加到由GitBash执行的plink命令中,可以设置git config选项:

git config --global core.sshCommand "plink -batch"

或设置GIT_SSH_COMMAND环境变量。

从未知主机克隆存储库时的输出将类似于以下内容:

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 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40
Connection abandoned.
fatal: Could not read from remote repository.

在此消息之后,您可以使用以下命令添加要缓存的密钥:

echo y | plink git@bitbucket.org

备注:请检查plink是否在您的计算机中PATH。或者在GitBash配置选项中使用类似UNIX的路径,例如:

/c/Program\ Files/PuTTY/plink.exe -batch

1
您好,我收到此消息:严重错误:断开连接:没有可用的支持的身份验证方法(服务器发送:publickey)
pungggi

4

即使执行了其他答案中提到的解决方法后,您也可能会遇到类似以下错误:

严重错误:断开连接:没有可用的受支持的身份验证方法(发送的服务器:publickey)

要立即解决这两个问题,请在~/.profile文件(C:\Users\<Username>\.profile)中添加以下内容,将git bash更改为使用SSH而不是PuTTY 。如果您还没有此文件,请使用此行创建一个新文件。

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

然后打开一个新的Git的bash窗口,并尝试git clonegit pull一次。

请注意,如果您还没有一个SSH密钥,则可能需要创建一个SSH密钥。为此,请按照Bitbucket网站上的说明进行操作。

有关相关信息,请参见此SO问题


1

在您的git bash shell中,检查是否存在GIT_SSH:
echo $GIT<tab><tab>
如果存在并设置为putty,请执行:
unset GIT_SSH
您可能希望将其放入git bash启动脚本之一。
这不是通用解决方案。它在我们的特定情况下有效。


什么是“ git bash启动脚本”?我只对真正的Linux熟悉。
杰夫·K

有多个启动脚本。其中一些位于/ etc目录中。其他可以位于您的主目录中。执行哪些启动脚本取决于外壳程序的命令行选项(交互式vs登录)。无论外壳运行在哪个操作系统上,这些都是相关的。
理查德·杰索普

Windows没有'/ etc'目录。
Jeff K

在Windows下运行的Bash Shell可以。它们通常映射到Shell基本(或安装)目录之外的某个位置。看看git bash和Cygwin bash。请记住,这些外壳看起来和在Linux系统上的外壳操作都非常相似。
理查德·杰索普

0

听起来有些愚蠢,但是尝试了以上所有内容之后,我决定使用默认选项重新安装Git Bash,并且可以正常工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.