Git clone/pull在"缓存中的Store key"中不断冻结?

Mar*_*ios 134 windows git ssh version-control bitbucket

我正在尝试将我的BitBucket帐户中的repo克隆到我的Windows 10笔记本电脑(运行GitBash).我已完成连接所需的所有步骤(设置我的SSH密钥,通过成功SSHing git@bitbucket.org等进行验证).但是,每当我尝试克隆一个repo时,在确认我想要缓存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
Run Code Online (Sandbox Code Playgroud)

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

没有错误消息可以使用,我真的不知道出了什么问题.我尝试了多次回购,包括非常小的回购,但根本没有成功.

the*_*pus 155

在Windows 10上克隆repo时我遇到了这个问题.

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

  • 这并没有直接解决它,但它让我意识到问题与使用Putty进行ssh身份验证而不是OpenSSH的GitBash有关.当我删除GIT_SSH系统变量并重置GitBash时,一切正常.谢谢! (17认同)
  • 这在Win 7上使用命令控制台为我工作.我希望有人能告诉我为什么会这样,而不仅仅是一种解决方法. (3认同)
  • 使用`putty`在缓存中添加`github`键对我有用 (2认同)
  • 任何人都可以告诉如何做上述解决方案 (2认同)
  • @Shreyan Mehta 只需打开 putty,在主机名下粘贴 git@github.com (或您正在使用的任何主机)。确保选择 SSH 连接类型。端口号应为 22。此外,请确保在启动 pageant 之前将 ssh 密钥加载到 pageant 中。 (2认同)

cam*_*ous 101

  1. 打开Putty
  2. 输入主机名(如bitbucket.org)
  3. 单击打开
  4. 在弹出窗口中单击是以缓存主机密钥
  5. 关闭Putty

  • 这与接受的答案有什么不同? (2认同)

Tim*_*ell 22

要从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
Run Code Online (Sandbox Code Playgroud)

或者使用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
Run Code Online (Sandbox Code Playgroud)

另外值得一提的是putty 将已知主机存储在注册表项下:

HKEY_CURRENT_USER\SoftWare\SimonTatham\PuTTY\SshHostKeys
Run Code Online (Sandbox Code Playgroud)

要快速执行上述操作,您可以将以下内容放入.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"
Run Code Online (Sandbox Code Playgroud)

putty-hosts.reg要点

  • `致命错误:断开连接:没有可用的受支持的身份验证方法(服务器发送:公钥)` (3认同)
  • 另见前面有关plink这方面的问题和答案:http://serverfault.com/questions/420526/auto-storing-server-host-key-in-cache-with-plink (2认同)

小智 7

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

  • 很好的解决方案!这应该已标记为答案 (5认同)

fre*_*chu 6

为了解决这个问题,我将 GitBash 配置为使用带有-batch选项的plink 。该选项禁用所有提示 - plink 将终止而不会挂起,并且不会向缓存添加任何密钥指纹。

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

git config --global core.sshCommand "plink -batch"
Run Code Online (Sandbox Code Playgroud)

或者设置GIT_SSH_COMMAND环境变量。

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

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.
Run Code Online (Sandbox Code Playgroud)

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

echo y | plink git@bitbucket.org
Run Code Online (Sandbox Code Playgroud)

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

/c/Program\ Files/PuTTY/plink.exe -batch
Run Code Online (Sandbox Code Playgroud)


Sch*_*rky 5

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

致命错误:已断开连接:没有可用的支持的身份验证方法(服务器发送:公钥)

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

GIT_SSH="/usr/bin/ssh.exe"
Run Code Online (Sandbox Code Playgroud)

然后打开一个新的 git bash 窗口并再次尝试您的git clonegit pull

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

请参阅此问题以获取相关信息。