多個帳號的 SSH Config 設定

一般的情形下,我們不會太需要去做 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 去做連結:

Host github.com-Apple
HostName github.com
User git
IdentityFile ~/.ssh/Archie_Apple
 
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/github

這邊可以看到,我在 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 的作者。

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus