最近在 GitHub 上建了 private repository,並且想透過這個 repository 來達成自動化部屬
而面臨到的第一個問題是 GitHub 已經不支援使用使用帳密存取私人儲存庫
必需透過 SSH Key 來存取
往下看之前必須提醒讀者
以下我所使用的作業系統是 Windows 10
如果您是 Mac 使用者
Gen Key 及 Sourcetree 的功能也許會有出入
不能完全參考
流程
實作之前簡單講一下流程
- 先透過工具產生一對 SSH Key (一把公鑰,一把私鑰)
- 把公鑰丟到 GitHub 上,私鑰留在自己電腦
- 透過私鑰存取 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 格式的金鑰
依照下圖做設定即可
以上,下台一鞠躬