透過 SSH key 存取 GitHub

最近在 GitHub 上建了 private repository,並且想透過這個 repository 來達成自動化部屬
而面臨到的第一個問題是 GitHub 已經不支援使用使用帳密存取私人儲存庫
必需透過 SSH Key 來存取

往下看之前必須提醒讀者
以下我所使用的作業系統是 Windows 10
如果您是 Mac 使用者
Gen Key 及 Sourcetree 的功能也許會有出入
不能完全參考

流程

實作之前簡單講一下流程

  1. 先透過工具產生一對 SSH Key (一把公鑰,一把私鑰)
  2. 把公鑰丟到 GitHub 上,私鑰留在自己電腦
  3. 透過私鑰存取 GitHub 上的私人儲存庫

就是這麼簡單!

1. 產生SSH Key

  • 打開 SourceTree 內建的 Gen Key 程式
    Tools -> Create Or Import SSH Keys
    然後點下 Generate 按鈕

  • 待程式跑完後,在 Public Key 區塊就會出現結果
    把 Public Key 複製起來,準備貼到 GitHub 上

  • 按下 Save Private Key 按鈕,將私鑰匯出備用
    匯出前會提示你沒有輸入私鑰密碼
    代表只要有人拿到你的私鑰,就可以存取你的 GitHub
    (這不正是我們想要的達成的目標?)
    所以我會忽略這訊息直接匯出
    取得一個副檔名 ppk 的私鑰檔
    PS: 若您害怕私鑰會外流,建議還是設個密碼

2. 把公鑰丟到GitHub上

  • 登入 GitHub 後,點選右上角頭像 -> Settings
    左邊區塊點選 SSH and GPG Keys -> New SSH

  • Title 可自行輸入
    Key 貼上輸入步驟1複製的 Public Key
    按下 Add SSH Key

3. 在SourceTree內匯入私鑰,並存取GitHub上的專案

  • Windows 右下角,平常退出隨身碟那邊,會有一個 putty 圖案


    這個其實是 SourceTree 管理 Key List 的小工具
    點開後,按下 Add Key -> 匯入步驟1的私鑰檔

  • 我有預先在 GitHub上建立一個 Private Repo
    進去取得給 SSH 使用的 Clone Url

  • 在 SourceTree 把專案 Clone 下來
    一切正常的話會如下圖

     

  • 如果你的 SourceTree 一直鬼打牆要你匯入私鑰
    那就是你的私鑰匯入失敗或者是匯錯把私鑰

  • 最後測試 push 功能,修改 read.md 後,上傳到 GitHub 上
    確認可以上傳就大功告成了



最後提醒一下,就我目前接觸到的案例
這個 ppk 格式的私鑰只有 Windows 版的 SourceTree 使用
若需要使用到不同格式的私鑰
可以透過 putty 的 Gen Key 程式,選擇 Conversion 來取得不同格式的私鑰


就我理解,他們都是同一把 Key,只是格式不同
ppk 是 putty 專用,而普遍較常看到的是 OpenSSH Key 格式
一般找到的教學文章,大多使用 ssh-keygen 指令來產生金鑰
產出來的就會是 OpenSSH Key 的格式

2022/03/25更新
在寫 GitHub 版本更新後觸發 Jenkins 自動包版
發現 Sourcetree 也是可以引入 OpenSSH Key 格式的金鑰
依照下圖做設定即可

以上,下台一鞠躬

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *