24

目前我对乌龟 git 有一个奇怪的问题,我无法弄清楚。尝试提交到我在 github 上的存储库时出现错误

错误:对 martindevans/Hermes.git 的权限拒绝 key2

Key2 是我用来访问不同 github 存储库的密钥,但是远程 url 未设置为使用 key2,正如您在此处看到的那样,它被设置为使用 private.ppk

在此处输入图像描述

我是在做明显错误的事情,还是乌龟 git 坏了?

NB。回应评论。使用普通 git 会导致:

C:\Users\Martin\Documents\Visual Studio 2010\Projects\Hermes>git push
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
4

4 回答 4

37

有不同的私钥格式。我的密钥对是用 puttygen 生成的,但我的 Tortoise 被配置为使用 ssh.exe(表单 msysgit)作为 ssh-client。所以我把它改成了 plink(来自 Tortoise),它起作用了。

  • ssh-key.exe => ssh.exe (C:\msysgit\msysgit\bin)
  • puttygen.exe => TortoisePlink.exe (C:\Program Files\TortoiseGit\bin)

附加说明:使用正确的 URL!Github 为您提供了三个 URL https、git 和 ssh。


编辑:

我在这里调整了设置

Settings - TortoiseGit >> Network >> SSH-Client
C:\Program Files\TortoiseGit\bin\TortoisePLink.exe

我已经生成了密钥对

 C:\Program Files\TortoiseGit\bin\puttygen.exe
于 2011-08-31T21:35:08.500 回答
13

哈!ProcMon 来救援。这是 tortoisegit / tortoiseplink 中的一个错误。它应该优先选择通过选美为该远程设置的密钥,而是优先选择通过 putty 为该特定服务器存储在注册表中的密钥。两个修复。

这里有 2 个可能的修复

您的 tortoiseplink 与 putty 集成,它正在读取您保存在与该服务器关联的 putty“会话”中的私钥。至少对我来说是这样。虽然我不在 github 上,所以我不知道这个解决方案对每个人的可行性。

我建议在腻子会话配置中手动删除密钥集,并为您的腻子会话使用 pagaent,因为这就是 tortoise git 所做的。这也使 tortoisegit 使用遥控器的密钥集。

  1. 因此,您可以打开 putty,加载与服务器关联的任何会话,转到 Connection/SSH/Auth 并修改/删除“用于身份验证的私钥文件”值。MOdification 可能会修复此 repo,但如果您对同一服务器使用不同的密钥,则会搞砸另一个 repo。

  2. 您可以自己修改/删除注册表项。它是HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\$SERVERNAME$\PublicKeyFile

于 2012-11-20T19:09:21.573 回答
1

在 git bash 中创建密钥:

ssh-keygen -t rsa

将所有内容留空,不要设置密码。取 ~/.ssh/id_rsa.pub 的内容并将其粘贴到 github 提供的公钥空间中。

现在通过 ssh 连接到 github 来测试它。如果可行,您将能够使用 git。

希望这可以帮助。

于 2011-03-19T01:48:00.623 回答
1

我在设置 TortoiseGit 以访问 Bitbucket (Win10) 时遇到了同样的问题。为了解决它,我必须删除注册表中旧的保存主机键HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys(不是(默认)键,tho)。

于 2016-11-11T11:59:05.990 回答