一般的情形下,我們不會太需要去做 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-Applegithub.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 的作者。

轉載請注明轉自: Archie  , 本文固定鏈接: 多個帳號的 SSH Config 設定

  1. comteken's avatar
    comteken 發表於 2017-07-17 2:37:15 回復 #1

    你的 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

    • Archie's avatar
      發表於 2017-07-18 11:50:19 回復

      @comteken:感謝你的分享XDD
      測試的話還可以加上 ssh -v host 會有更多的資訊!

Bitnami