【问题标题】:TortoiseGit using incorrect SSH keyTortoiseGit 使用了错误的 SSH 密钥
【发布时间】:2011-03-18 23:28:13
【问题描述】:

目前我对 Tortoise git 有一个奇怪的问题,我想不通。当尝试提交到我在 github 上的存储库时,我得到了错误

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

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

是我做错了什么,还是乌龟的 git 坏了?

铌。作为对 cme​​ts 的回应。使用普通 git 会导致:

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

【问题讨论】:

  • 在没有 Tortoise 的情况下使用常规 Git 是否可以正常工作?
  • 好问题!既然您有很多投票的答案 - 您会考虑将其标记为这样吗?

标签: git tortoisegit


【解决方案1】:

有不同的私钥格式。我的密钥对是用 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)

补充说明:使用正确的网址! Github 为你提供了三个 URL https、git 和 ssh。


编辑:

我在这里调整了设置

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

我已经生成了 密钥对

 C:\Program Files\TortoiseGit\bin\puttygen.exe

【讨论】:

  • 还要检查某些 Tortoise 对话框中的“AutoLoad Putty Key”选项。
  • 你在哪里改的?
  • 如果您想使用 OpenSSH 密钥,那么有哪些变化?您使用 msysgit ssh 并且将 ssh 密钥放在哪里?在设置->远程它说只有腻子键!
  • “附加说明:使用正确的 URL!”为我做的。非常感谢!
  • "附加说明:使用正确的 URL!Github 为您提供了三个 URL https、git 和 ssh。"切换到 HTTPS
【解决方案2】:

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

此处有 2 个可能的修复方法

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

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

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

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

【讨论】:

  • 还有 Default%20Settings 作为 $SERVERNAME 我错过的会话密钥,其中还包含一个 PublicKeyFile
  • 谢谢!就我而言,当我在 Putty 的“默认设置”下的“数据”部分更改“私钥文件”和自动登录用户名时会发生这种情况。当我恢复这些更改时,TortoiseGit 再次工作。
  • 我在连接 -> SSH -> Auth 下的 PuTTY 默认设置中设置了一个私钥,它破坏了命令行 git 和 TortoiseGit。当我使用 -i 选项手动指定密钥时,PLink 工作正常,这很奇怪。
【解决方案3】:

在 git bash 中创建密钥:

ssh-keygen -t rsa

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

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

希望这会有所帮助。

【讨论】:

  • 创建一个新密钥可能会暂时解决问题,但我怀疑它会长期解决问题。这一直有效,直到今天我的计算机显然决定使用错误的密钥连接到 github。
  • 我的 Git 版本甚至无法加载以这种方式生成的密钥。我用 putty 生成的密钥被加载,用 gitbash 创建的密钥在尝试推送到存储库时给出错误:“无法加载密钥文件”。
【解决方案4】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-11
    • 2018-07-26
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 2021-11-17
    相关资源
    最近更新 更多