SourceTree 連接 GitHub, Bitbucket (使用 SSH) 於 Windows

介紹如何使用 Windows 版的 SourceTree 透過 SSH 連接到 GitHub 及 Bitbucket。

SSH 全名為 Secure Shell,是一種資料傳輸的安全協定,可以對傳輸的資料進行加密,驗證方式可以使用密碼或金鑰,接下來實作會採用金鑰認證的方式,SSH 金鑰為非對稱加密,需要一組公鑰及私鑰,你可以將公鑰儲存在需要存取的遠端主機,在自己電腦設定私鑰,來進行資料加解密。

產生金鑰

使用 SSH 連接需要一組公鑰及私鑰,我們可以使用 PuTTY Key Generator 來產生,安裝 SourceTree 時會一併安裝。

點選 [Tools] > [Create or Import SSH Keys]。

點選 [Generate] 產生金鑰,產生期間需要移動滑鼠產生隨機資料。

金鑰產生完成。

  • Public key for pasting into OpenSSH authorized_keys file: 公鑰,請先複製並貼到記事本,稍後連接 GitHub 或 Bitbucket 需要用到。

  • 另外有幾個地方可以設定:
    Key comment: 金鑰註解。
    Key passphrase: 私鑰密碼,選擇性填寫,若有設定,往後開啟私鑰時會提示輸入密碼。
    Confirm passphrase: 確認私鑰密碼。

  • 點選 [Save public key] 儲存公鑰。

  • 點選 [Save private key] 儲存私鑰。

連接 GitHub

設定 SSH Key

登入 GitHub,點選頁面上方的 [Settings]。

新增 SSH 金鑰。

  1. 點選頁面左側的 [SSH keys] 管理 SSH 金鑰。

  2. 接著點選右側的 [Add SSH key]。

  3. 在 Add an SSH Key 下方填寫金鑰資訊。

    • Title: 金鑰標題,取個好分辨的名稱,將來金鑰變多的話方便識別。
    • Key: 公鑰,貼上先前產生的公鑰。
  4. 點選 [Add key] 按鈕儲存,儲存時可能會要求輸入 GitHub 密碼。

儲存後可以看到剛剛新增的 Key 出現在列表。

取得 GitHub Repository SSH URL

  1. 進入想要連接的 repository。

  2. 頁面右側有 clone URL 區塊,請選擇 SSH,並複製 URL。

    SSH 的 URL 是以 git@github.com:… 開頭。

連接 Bitbucket

設定 SSH Key

登入 Bitbucket,點選頁面右上方的個人圖示,點選 [Manage account]。

新增 SSH 金鑰。

  1. 點選頁面左側的 [SSH keys],接著再點選 [Add key]。

  2. 填寫金鑰資訊。

    • Label: 金鑰標籤,取個好分辨的名稱,將來金鑰變多的話方便識別。
    • Key: 公鑰,貼上先前產生的公鑰。
  3. 點選 [Add key] 按鈕儲存。

  4. 儲存後可以看到剛剛新增的 Key。

取得 Bitbucket Repository SSH URL

  1. 進入想要連接的 repository。

  2. 點選頁面左側的 [Clone]。

  3. 選擇 SSH 的方式,並複製 URL。

設定本機電腦的私鑰

在遠方主機設定好公鑰之後,接下來需要在本機電腦設定私鑰,在 Windows 平台上可以使用 PuTTY 提供的金鑰代理程式 Pageant,

SourceTree 執行時會一併啟動 Pageant,並在常駐列出現圖示,在圖示上點選右鍵,選擇 [Add Key] 加入私鑰。

選擇前面儲存的私鑰檔 (預設附檔名為 ppk),如果有設定Key passphrase請於跳出的視窗中輸入密碼。

點選常駐列圖示 [View Keys] 功能查看目前已經加入的私鑰。

設定 SourceTree 連接 GitHub 或 Bitbucket 的 repository

  • Clone 新 repository

    1. 開啟 SourceTree 的 [Clone / New] 功能。
    2. 將前面複製的 GitHub 或 Bitbucket 的 repository URL 貼到 [Source Path / URL]。
  • 修改現有 repository URL

    1. 選擇一個 Repository,點選功能表 Repository > Repository Settings。
    2. 修改 Remote repository paths。
    3. 修改為 SSH URL。

設定完成後就會透過 SSH 的方式來連接,因為使用金鑰來做身分驗證,不會出現像使用 HTTPS 時叫你輸入帳號密碼,避免敏感資訊在網路上傳遞,只是要注意保存好私鑰,不要外流。

Reference

金鑰認證設定好,遠端登入沒煩惱。
http://neversaycoding.tumblr.com/post/94238914127
在 Windows 使用「非對稱金鑰」來遠端登入 SSH 的方法
http://www.vixual.net/blog/archives/190
Secure Shell
http://zh.wikipedia.org/wiki/Secure_Shell