Bitbucket:与 ssh 密钥一起使用时获取“没有可用的支持的身份验证方法(服务器发送:公钥)”

问题描述 投票:0回答:1

我知道已经有很多类似的问题了,但到目前为止我还找不到任何描述或解决/解决我的确切问题。

我刚刚使用以下命令在 Bitbucket 中设置了我的个人 ssh 密钥:

ssh-keygen -t ed25519 -C "${myMail}

并且它在我的

id_ed25519.pub
目录中成功创建了
id_ed25519
%USERPROFILE%\.ssh

我按照官方文档复制并粘贴到 Bitbucket 的公钥,如下所示:

clip < id_ed25519.pub

当尝试通过 TortoiseGit 克隆存储库时,如下所示:

ssh://git@${repoUrl}:${sshPort}/${pathToProject}.git

我收到以下错误:

No supported authentication methods available (server sent: publickey)

*注意:自从第一次从该服务器克隆以来,我接受了服务器密钥/指纹

来自 TortoiseGit 的额外输出:

git.exe clone --progress -v "ssh://git@${repoUrl}:${sshPort}/${pathToProject}.git" "C:\${targetLocationPath}"
Cloning into 'C:\${targetLocationPath}'...
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.


git did not exit cleanly (exit code 128) (4625 ms @ 03.03.2024 11:54:51)

此外,从克隆网址中删除

ssh://
部分(如此处建议)也没有帮助 - 这里请求只是超时了。

尝试通过 Git Bash 直接通过 CLI 克隆存储库后,它成功运行,没有出现任何问题(不过,在此过程中我需要再次接受 服务器密钥/指纹):

$ git clone ssh://git@${repoUrl}:${sshPort}/${pathToProject}.git "${targetLocationPath}" Cloning into '${targetLocationPath}'... The authenticity of host '[${host}]:${sshPort} ([${ipAddress}]:${sshPort})' can't be established. RSA key fingerprint is SHA256:${fingerprint}. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '[${host}]:${sshPort}' (RSA) to the list of known hosts. ...

=> 我在设置中缺少什么,或者我还需要检查/配置什么才能使其现在也能与 TortoiseGit 一起使用? 这两个工具不应该使用相同的“子系统”和 ssh 密钥来访问存储库吗? -> 我如何检查和验证?

截至目前,它仍然只能通过

Git Bash 直接工作,但不能在 TortoiseGit 中工作。他们的钥匙本身显然不是问题并且工作正常。

使用工具:

    Git(+ Git Bash):
  • git 版本 2.33.0.windows.1
  • TortoiseGit:
  • TortoiseGit 2.13.0.1
  • Bitbucket:
  • Atlassian Bitbucket v8.9.9(c08695c516779aa7cb3b29c51ed3e7880b6d8529)
PS:这是新安装的 Windows 10,因此是第一次设置机器并克隆存储库。

编辑:

经过更多搜索后,我发现了 ssh-agent 服务。然后我发现以下有关正在使用的不同 ssh 实现/代理的相关帖子,这可能会导致此问题的解决方案:

  • 如何在Windows上运行ssh-agent?
  • Windows 上使用 SSH 的 Git
git ssh bitbucket git-bash tortoisegit
1个回答
0
投票
正如怀疑的那样,使用了不同的“子系统”(-> ssh 实现/代理/客户端)。

对我来说,当前的修复方法是将 TortoiseGit 使用的 ssh 客户端更改为 Git 使用和提供的客户端:“C:\Program Files\Git\usr in\ssh.exe”。

您可以在

TortoiseGit -> Settings -> Network

 然后在 SSH 部分执行此操作。

我选择了 Git 提供的 OpenSSH 客户端,以使 CLI 和 TortoiseGit 之间的配置更加相似,而不是选择 Windows 中的客户端。

--

默认情况下,TortoiseGit 使用 PLink/TortoiseGitPlink (-> "C:\Program Files\TortoiseGit in\TortoiseGitPlink.exe") 客户端,其中 Windows/Git (CLI) 使用 OpenSSH。

=> 注意:Windows 使用自己的 OpenSSH 客户端,例如“C:\Windows\System32\OpenSSH\ssh.exe”,但 Git 也带来了它自己的 ssh 客户端,例如在“C:\Program Files\Git\usr in\ssh.exe”中。

--

深入研究此问题的优质资源如下:

感谢 MrTux 的指出和支持!

© www.soinside.com 2019 - 2024. All rights reserved.