Saturday, 15 April 2017

SSH 設定 config 使用不同的 Key 對應不同的 Server

Preface

在工作的時候常常會遇到公司的 codebase 要設定 SSH 之後才能把自己的程式碼 commit 上去,可是這時候又會遇到自己的常常在使用的 codebase 可能是 Github, Gitlab......等等其他的服務。如果需要常常將 SSH key 作切換的話蠻麻煩的。所以這時候可以透過設定 config 讓 SSH 自動幫你切換 SSH key。

假設一下情境,目前有兩個 Git Repository: repoA (公司專案連接到公司的 codebase), repoB (個人的專案連接到個人的 Github)。透過設定檔告訴 SSH 當 repoA 要進行 commit 的時候需要連接到公司的 codebase 這時候透過 SSH config,SSH 就可以自動的幫你切換對應的 SSH key。要進行 commit repoB 的時候反之亦然。

Tutorial

首先切換到 SSH 的路徑底下
$ cd ~/.ssh/

接著使用 ssh-keygen 產生兩組 key,記得在產生 key 的過程中需要設定 key 的名稱,記得要設定成你自己容易區分的名字。例如: work_id, personal_id
$ ssh-keygen -t rsa -C "your comment"

接著使用文字編輯器在 SSH 的路徑底下建立一個叫做 config 的檔案
$ vim config

//Config 內容如下

# GitHub.com server
Host Github
    HostName github.com
    User github_user
    IdentityFile ~/.ssh/personal_id

# Work codebase server
Host Your company name
   HostName 127.0.0.1 #Your id address of your company codebase
   User your name
   port 7999 #According the setting of your company codebase
   IdentityFile ~/.ssh/work_id

設定檔也準備完成了之後,使用 ssh-add 把 work_id 和 personal_id 加入
$ ssh-add ~/.ssh/work_id
$ ssh-add ~/.ssh/personal_id
使用 ssh-add -l 功能來檢查哪些目前有哪些 key 已經被加入了
$ ssh-add -l
別忘了把自己新產生 SSH key 註冊到 Github 以及公司的 codebase上。
$ pbcopy < ~/.ssh/work_id.pub
接著你就可以試著從自己的 Github 上以及公司的 codebase 上抓一個 repo 測試一下連線是否有成功。

References

0 comments:

Post a Comment