簡體   English   中英

TortoiseGit 使用了錯誤的 SSH 密鑰

[英]TortoiseGit using incorrect SSH key

目前我對烏龜 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

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

哈! 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

我在設置 TortoiseGit 以訪問 Bitbucket (Win10) 時遇到了同樣的問題。 為了解決這個問題,我必須刪除注冊表中HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys中保存的舊主機密鑰(不是(默認)密鑰)。

在 git bash 中創建密鑰:

ssh-keygen -t rsa

將所有內容留空,不要設置密碼。 取 ~/.ssh/id_rsa.pub 的內容並將其粘貼到 github 提供的公鑰空間中。

現在通過 ssh 連接到 github 來測試它。 如果可行,您將能夠使用 git。

希望這可以幫助。

我在推送到 GitHub 時隨機出現了這個確切的錯誤。 我嘗試了此處列出的所有內容,但均無濟於事。 我的密鑰仍然很好——我仍然可以通過ssh -vT git@github.com進行連接,並且可以通過 Git Bash 推送/拉取。

我什至重現了 TortoiseGit 使用新密鑰,然后切換回舊密鑰並失敗,然后切換回新密鑰並失敗。 所以這似乎是 TortoiseGit 與 PuTTY 集成中的一個錯誤,盡管不是上面@scaryman 評論中列出的錯誤。

最后,以下工作:

  1. 升級到最新的 PuTTY 和 TortoiseGit
  2. 使用 Puttygen 創建新的 PPK 並將公鑰添加到 GitHub
  3. 使用新的 PPK 從 TortoiseGit 拉取
  4. 打開 Pageant 並刪除舊的 SSH 密鑰,因此新密鑰是唯一列出的一個。
  5. 刪除舊的 PPK 並從 Github 中刪除其公鑰。 這將強制所有使用舊 PPK 的存儲庫在您第一次連接到 GitHub 時出錯,然后它們會自動切換到您的新 PPK。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM