Sourcetree 使用 SSH keys 與 GitHub 連線

最近換了 Github 的密碼,發生 git push 推不上去的問題,查了資料推斷或許是 git-credentials 的快取與遠端認證產生衝突,決定使用 SSH 方式重新連線 GitHub,嘗試成功後來紀錄一下 SSH 的連線步驟。

1. 移除 local 儲存的認證與 Sourcetree 初始化

Mac 開啟 App「鑰匙圈存取」,輸入 git 查詢並刪除所有結果。

還原 Sourcetree 方面,這裡使用 AppCleaner 將 Sourcetree 以外的所有資料進行刪除。

2. Sourcetree 登入與產生 SSH Key

重新使用 OAuth 登入 GitHub 帳號後,選擇 SSH 協定並點擊產生 SSH Key 按鈕,此時會產生ㄧ個 .ssh 資料夾,裡面包含公鑰及私鑰 (分別為 [username]-GitHub[username]-GitHub.pub)。

產生完畢後點擊按鈕「複製到剪貼簿」複製公鑰、儲存設定。

3. GitHub 加入 SSH Key

到 GitHub SSH and GPG keys 頁面點擊「New SSH key」,Title 區塊輸入自定義名稱,Key 區塊則直接貼上剛剛複製的公鑰。

4. 將 SSH 密鑰連接到 GitHub 帳號

透過在終端機輸入 ssh -T git@github.com 確認正在使用的 SSH key 是否已連接到 GitHub 帳號,因為還沒連接,所以終端機會出現詢問是否加入的訊息,輸入 yes 後,出現以下敘述代表成功。

Hi, username! You‘ve successfully authenticated, but GitHub does not provide shell access.

如果之後有遇到 Permission denied (publickey) 的問題,可能是 Sourcetree 找不到 SSH 公鑰,我們可以透過在終端機輸入 ssh-add ~/.ssh/[username]-GitHub 重新找回。

執著於好看、好用的開發設計。