TortoiseGit: No supported authentication methods available

在嘗試使用 GitHub 來管理原始碼版本時,發現 TortoiseGit (v1.7.8) 在透過 SSH 協定存取遠端 GitHub 上的版本庫時會發生錯誤,但如果用 Git Bash 下指令的方式則沒有問題。

問題描述

Git for Windows 和 TortoiseGit 皆已安裝,且依照 GitHub 官網的文件 Set Up Git 中的「Set Up SSH Keys」一節的步驟操作,結果雖然能夠順利透過 Git Bash 下指令的方式將遠端的版本庫拉回本機,但如果後來嘗試改用 TortoiseGit 執行 Push 或 Pull 的動作,首先會看到這個對話窗:

圖 1

若選擇 Y 讓它繼續執行,就會出現錯誤:

No supported authentication methods available (server sent: publickey)


解決方法

首先,有兩個避開此問題的方法:一是只用 Git Bash 下指令的方式存取遠端版本庫,亦即放棄 TortoiseGit;二是捨棄 SSH,改用 HTTPS 協定。我們可以從 GitHub 網站上的 版本庫內容頁面中得知存取特定版本庫的 SSH 和 HTTP 協定的 URL,如下圖所示。

圖 2

知道版本庫的 URL 之後,在本機的版本庫資料夾上點右鍵 > TortoiseGit > Settings,開啟設定視窗之後,在視窗左方面板中點選 Git 底下的 Remote,就會看到右邊面板出現遠端版本庫的 URL 欄位。此時先點選 Remote 清單裡的 "origin" 項目,然後把 HTTP 協定的 URL 貼到右邊的 "URL" 欄位就行了。如下圖:

圖 3


以上方法不算正解。若還是想要用 SSH 協定,我後來是用以下方法解決:

首先下載並安裝 Putty,我用的是 putty v0.62 installer

Putty 的安裝目錄下會有一個 puttygen.exe,把它執行起來。開啟 PuTTY Key Generator 之後,點 Load 按鈕,此時會要你選擇一個 private key 檔案。這個檔案,就是先前提到的,依照 GitHub 文件 Set Up Git 中的「Set Up SSH Keys」一節中的指示所產生的 "id_rsa"(注意不是 "id_rsa.pub")。選好之後,若 PuTTY 認得檔案格式,會出現對話窗告訴你已經成功匯入一個 private key。參考下圖:

圖 4:匯入然後另存私鑰

接著再按同一個視窗中的 Save private key 按鈕,把它存成 PuTTY 的 private key 檔案格式,副檔名是 .ppk。

最後,參考圖 3,到本機版本庫的 TortoiseGit 設定視窗中,把剛剛儲存的 .ppk 檔案指定給 Putty key 欄位,這樣應該就行了。

應該有更簡單的方法吧... Orz

另外,CodePlex 也開始支援 Git 了(似乎是從今年三月開始),甚至 Mercurial 也都支援了!

圖 5

2 則留言:

  1. 有沒有報告 issue 給 TortoiseGit 呢?
    又1.7.12 解決了沒有?

    回覆刪除
  2. 我並沒有提報給 TortoiseGit。
    另外,到 TortoiseGit 版本發行說明文件中搜尋關鍵字 SSH,也沒有找到相關的修正,得實際試試看才知道了。

    回覆刪除

技術提供:Blogger.
回頂端⬆️