在同一台電腦設定多組 GitHub 帳號
設定多組 Github 帳號,並使用 ssh 連線
因為遠端工作的關係,我要在自己的電腦上設定公司的 GitHub 帳號
然而 GitHub 是不會讓你把同一組 SSH Key 設定給不同的帳號的
所以無法把私人帳號的 SSH Key 設定到公司提供的 GitHub 帳號上
目標:在一台電腦上設定兩組 SSH Key,並且在執行git
指令時自動選擇對應的 SSH Key
參考資料:Generating a new SSH key and adding it to the ssh-agent
1. 使用指令建立新的 ssh key
ssh-keygen -t rsa -C '{[email protected]}' -f ~/.ssh/id_rsa_company
產生出來的 ssh key 會存在以下路徑
- Mac:
/Users/username/.ssh
- Windows:
C:\Users\username\.ssh
此時先複製產生出來的 id_rsa.pub
內容
2. 在公司 github 帳號下新增 SSH key
首先進到帳號的 SSH keys 管理頁面
並按下畫面右方的New SSH key
按鈕
名稱選自己好識別的,內容貼上剛剛產生的 id_rsa.pub
內容
3. ssh config 設定
3-1. 清除已設定的全部金鑰
這個指令只會刪除設定相關,並不會把金鑰檔案刪除!
ssh-add -D
這邊嘗試好幾次,金鑰越來越亂,最後只能放棄重來
索性再往下操作前都清除掉原有的金鑰設定
反正重新加入很簡單,而且在接下來的流程中也會新增
3.2. 查看當前已經產生哪些金鑰
ls .ssh
3.3. 重新加入金鑰
在前面已經產生一組新的 ssh keyid_rsa_company
而電腦原有的個人金鑰叫做id_rsa
ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/id_rsa_company
可以使用指令查看是否成功加入
ssh-add -l
3.4. 修改 ssh 的 config 設定
首先我們要確定~/.ssh/config
檔案存在,如果不存在則建立
cd ~/.ssh/
touch config
open config
開啟config
檔案後,將內容修改成如下:
# Personal GitHub account
Host github.com
HostName github.com
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
# Work GitHub account
Host github.com-company
HostName github.com
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa_company
IdentitiesOnly yes
我們設定了兩組 ssh key,一組用於個人帳號,一組用於公司帳號
- Host:代表呼叫的主機,可以是 IP 或是域名
- IdentityFile: 代表要使用的 ssh key 檔案
- AddKeysToAgent: 表示是否要將 ssh key 加入到 ssh-agent 中
- UseKeychain: 表示是否要使用 ssh-keychain 來管理 ssh key
4. 測試連線
ssh -T [email protected]
ssh -T [email protected]
如果成功的話應該會分別顯示不同帳號的歡迎訊息
5. 從遠端 clone 到本機
原本的個人帳號不需要做任何調整
若是要 clone 公司帳號的專案,則要將指令內的 host 改為 config 中的公司帳號 Host
後面的專案名稱什麼的不需要更動
git clone [email protected]:{company/repository.git}
範例中就是把 GitHub 預設的 github.com
換成 github.com-company
如此一來在下指令時就會根據 Host 自動識別到對應的 ssh key 來進行連線!
要注意的是有些 Git 的 GUI 軟體不支援使用多組 ssh key 連線,可能會出現錯誤訊息
甚至是把你預設的 ssh key 也變成公司那組
下連線測試指令,不知道為什麼就一直連到公司帳號,而且還成功連線…
具體原因沒有去查,索性直接清除已設定的全部金鑰
比較建議的做法是,依然可以使用慣用的 GUI 進行本機的 Git 操作
像是commit
或是看線圖之類
而 push, pull 之類會和進行遠端操作的指令就直接開 terminal 執行吧
6. 調整既專案
如果是已經 clone 下來的專案的話,打開專案資料夾內/.git/config
檔案
並修改[remote "origin"]
下方的 url 為公司帳號的 url
[remote "origin"]
url = [email protected]:company/repository.git
fetch = +refs/heads/*:refs/remotes/origin/*
如果 GUI 支援編輯遠端的 url 的話,直接在 GUI 上修改更好
以上就是這次的踩坑經驗了!
之前一直都用公司配發的電腦開發,很久沒遇到這種問題
但是其實以前做過類似的設定,當時覺得這不是會頻繁出現問題就沒有寫下來
導致這次多花時間研究了一陣子,就是不頻繁出現才應該記下來
否則再次出現又要從頭摸索