当尝试通过“git pull”访问 BitBucket 时,Windows 的 Git 会显示“权限被拒绝(公钥)”错误,尽管 ssh 密钥正确

当尝试通过“git pull”访问 BitBucket 时,Windows 的 Git 会显示“权限被拒绝(公钥)”错误,尽管 ssh 密钥正确

我在跑:

  • Windows 10(最新更新)

  • Git 版本‘git 版本 2.36.1.windows.1’

  • SSH -V 返回:

     OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
    

在属性对话框中,C:\Windows\System32\OpenSSH* 内的所有可执行文件显示:

    product version: 8.1.0.1

(这是 Windows10 维护的默认套件 - 我自己从来没有碰过它)

  • “ssh-agent”已启动并运行,“ssh-add -l”显示我的两个密钥:

    3072 SHA256:.... <blahblah> (RSA)
    2048 SHA256:.... C:\foo\bar\key.ppk (RSA)
    

这些完全相同的密钥也在 WSL2(Ubuntu 20.04)内部使用,并且运行良好。

  • 当我尝试在任何服务器上运行“git pull”时BitBucketrepos 我收到以下错误:

      permission denied (public key)'
    

完全相同的命令在 Ubuntu 20.04 中运行良好,并且在“ssh-agent”中加载了完全相同的密钥。发生了什么?

答案1

事实证明,当谈到在 Windows10 中使用内置的 OpenSSH 库时,“git”对 BitBucket 有某种不满。

我最终重新安装了“git”,但这一次我确保 git 使用 Windows10 本身提供的 OpenSSH 套件(而不是 git 的内置 OpenSSH 套件),完成后一切都开始按预期工作。

附言:对 OpenSSH / BitBucket / Git 更了解的人可以进一步解释为什么内置的“OpenSSH”套件不起作用 - 这些事情暂时超出了我的能力范围。

Git 安装

PS#2:如果您只想避免重新安装“git”来调整这个特定的设置,那么您可以尝试一下(虽然我自己还没有测试过):

    git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"

相关内容