我正试图从我的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

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

由于没有可以处理的错误消息,我真的不知道哪里出了问题。我尝试过多次回购,包括非常小的回购,但都没有成功。


我在Windows 10上克隆回购时也遇到了这个问题。

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


开放的腻子 输入主机名(如bitbucket.org) 点击打开 在弹出窗口中单击是以缓存主机密钥 关闭腻子


要做到这一点,从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

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

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要点


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

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

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

或设置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.

在此消息之后,您可以使用命令添加一个密钥到缓存:

echo y | plink git@bitbucket.org

注意:请检查plink是否在您的PATH中。或者在git配置选项中使用类似unix的路径,例如:

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

这听起来有点傻,但在尝试了以上所有方法之后,我决定使用默认选项重新安装Git Bash,它成功了。


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

致命错误:断开连接:不支持可用的身份验证方法(服务器发送:publickey)

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

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

然后打开一个新的git bash窗口,尝试你的git克隆或git拉再次。

注意,如果您还没有SSH密钥,这可能需要您创建一个SSH密钥。要做到这一点,请遵循Bitbucket网站上的说明。

相关信息请参见这个SO问题。


我设法通过直接运行plink来让它工作,在pageant运行后直接使用plink命令- plink.exe -agent -v git@github.com然后在这个git工作后不挂起。


在你的git bash shell中,检查是否存在GIT_SSH: echo $ GIT <选项卡> <选项卡> 如果它存在并且被设置为putty,执行: 设置GIT_SSH 您可能想把它放到一个git bash启动脚本中。 这不是一个普遍的解决方案。它在我们的特殊情况下是有效的。


如果你使用KiTTY(而不是PuTTY),它有-auto-store-sshkey参数。

因此,你可以将GIT_SSH_COMMAND(或git config——global core.sshCommand)设置为c:/KiTTY/klink.exe -auto-store-sshkey。

输出仍然包含关于新键和问题的信息,但它不会等待答案:

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 ssh-ed25519 key fingerprint is:
ssh-ed25519 255 2e:65:6a:c8:cf:bf:b2:8b:9a:bd:6d:9f:11:5c:12:16
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)
Autostore key is on

默认SSH连接端口为7999