一般的情形下,我們不會太需要去做 config 檔案的設定,
因為其實不太需要建立太多組的 SSH key 來增加管理上的麻煩;
但隨著身份的增加(大多數是因為工作關係),
我們會需要用到其他組 SSH key 來連接 git server。
如果公司使用的 git server,是我原本就沒有使用的呢?
那就沒什麼差了。
就像是我第一份工作,公司所使用的 git server 為 AWS 的 CodeCommit,
而原先我根本就不用使用到那邊的服務,所以建立一組 SSH key 在 AWS 上使用也沒什麼衝突。
且 AWS 上的教學文件,會讓你在 ~/.ssh/config 之中,以 Host 作為區別;
所以它只會在 AWS 上使用你為了 AWS 所建立的 key。
但⋯最容易發生的情形就是:
公司也使用 Github 作為組織的 git server
通常我們會有一組自己私人的 Github 帳號,若公司不反對你使用私人帳號加入組織的話,
其實你也就沒什麼差了;
但大多數的情形是會給你一組(或是請你申請一組)公司信箱的 Github 帳號,
來維護 private git repository。
Public key
我們先來看看 ssh 的 public key 裡頭,帶了哪些資訊:
重點便是最後的 xpopchi@gmail.com。
這把 key 會知道是和哪個信箱綁定在一起的,所以在 Github 上,
公司和私人的帳號便無法共用同一組 SSH key。
所以我們得替公司的信箱再建立一組 SSH key
建立的流程可以看 Github 上的文件,不過會需要在建立時,替它取不同的名稱:
e.g Archie_Apple.pub
個人的習慣是在後面加上公司的名稱來做區別。
它都會放置在 ~/.ssh/ 裡頭,我們需要透過編輯 ~/.ssh/config 的方式,
以及 git url 的調整,來做到使用不同的 key 連接同一個 git server。
~/.ssh/config 的設定方式
我們透過不同的 Host 命名方式,來定義裡頭要使用的哪一把 key 去做連結:
https://gist.github.com/ArchieR7/f6855c29d38f301dbdf6c58232fd5a39
這邊可以看到,我在 Host 那邊區隔出 github.com-Apple 及 github.com,
意思便代表著當 SSH 的 url,host 為 github.com-Apple 時,
會使用 Archie_Apple 這把 key;
而其他的 github 就照舊使用私人帳號的那把。
最後,使用的方式
在你原先進行的 url 之中,做一些調整:
git@github.com:ArchieR7/APNsPusher.git
這是使用私人帳號的方式,而若要使用 Archie_Apple的話:
git@github.com-Apple:ArchieR7/APNsPusher.git
這樣就能夠使用另一把 key 來進行動作了。
不過最好是在 ~/.ssh/config 之中補上 user.name 和 user.email,
否則之後再進行 commit 時,都會以預設的名稱和信箱作為 commit 的作者。
你的 ssh config 已經有設定預設 user了
所以只要填入 github.com:ArchieR7/APNsPusher.git
就會等於 git@github.com:ArchieR7/APNsPusher.git
翻譯起來應該是
使用 git 這個帳號 ssh 到 github.com 這個 host, 存取 ArchieR7/APNsPusher.git 這個檔案
如果要測試的話可以在 terminal 輸入
ssh [Host]
ex: ssh github.com-Apple
感謝你的分享XDD
測試的話還可以加上 ssh -v host 會有更多的資訊!