多個帳號的 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-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 的作者。

對「多個帳號的 SSH Config 設定」的想法

  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

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s