一台電腦兩個GitHub帳戶

我的系統

macOS Monterey 12.4

你所使用的 SSH 密鑰決定了你是否有權限訪問某一個GitHub帳號底下的倉庫

而你本地倉庫設置的 ** use email 則決定了在 GitHub 的commit 記錄中的使用者 **

而一般在沒有進行以下配置的情況下,你的電腦只會默認使用一個SHH 密鑰進行連接

這就導致了你只能訪問一個GitHub 賬號

生成密鑰

首先是生成兩個SSH密鑰
分別是對應你的兩個身份:
身份A
身份B

找到 ~/.ssh

$ cd ~/.ssh

如果沒有 /.ssh

就建立一個

mkdir ~/.ssh
chmod 700 ~/.ssh

生成密鑰

$ ssh-keygen -t rsa -C “youremail@gmail.com”

ssh-keygen 是用來建立 key 的指令
-t rsa 則是要建立金鑰的類型,這邊選 rsa
-C “身份A@gmail.com” 是要幫你的公開金鑰檔案結尾加上註解,讓你辨識用,通常會使用電子信箱,也可以使用任何你方便的記號。

輸入之後,會問問題:

  1. Enter file in which to save the key (/Users/myaccount/.ssh/id_rsa):
    這邊輸入你想取的金鑰名稱,如果想取 personal 的話,就輸入 /Users/cyen/.ssh/id_rsa_personal
    如果不取名字,會覆蓋前面的金鑰。
    取名字會比較好分辨。

  2. Enter passphrase (empty for no passphrase):

    接下來會問你要不要設定密碼,如果有設定,每次使用這個 key 都要輸入密碼。如果不要設密碼,直接按 enter 就好。

  3. 下一題是再打一次密碼,沒設定的話繼續按 enter 就好

    建立好之後你,你可以輸入 ls 查看,應該會生成兩個金鑰,有 .pub 副檔名的是公鑰,沒有的是私鑰。

//結果:

id_rsa_personal     #私鑰 
id_rsa_personal.pub #公鑰 ==> 要放在 github 裡面

第二個金鑰可以依照上面步驟再生成一個。

設定 SSH-KEY 公鑰 - Github

先複製公鑰

$ pbcopy < ~/.ssh/id_rsa_personal.pub

新增到 github

接著到 github 點右上角的頭像 => Settings
=> SSH and GPG keys
=> new ssh key
=> 在 key 那邊貼上剛剛複製的(title 沒輸入也可以,如果你只會有這個key)
=> add ssh key

SSH 設定

打開 .ssh 底下的 config 檔案

$ vim config

//. 或是用其他文字編輯器打開

如果沒有,就建一個

$ touch config

config 設定

# 預設帳號 (個人帳號) 
Host personal
     HostName github.com
     User git
     IdentityFile ~/.ssh/id_rsa_personal
# 工作帳號
Host work
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_work
# 其他帳號 ...

主要要設定是 Host 跟 IdentityFile
Host 後面的名稱可以自己取
等一下會用到
IdentityFile 則是 ssh key 的檔案名稱
這裡使用私鑰

修改完之後,測試一下

$ ssh -T git@github_personal    //身份A 
$ ssh -T git@github_work   //身份B

如果都能回應如下,應該就是成功了:

Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.

Git 設定

如果這部份沒有設定,等等在 push 時

不是 push 失敗

不然就是 commit 會出現兩個身份

删除全域設定

$ git config --global --unset user.name
$ git config --global --unset user.email

本地設定

$ git config --local user.name xxxx
$ git config --local user.email xxx

因為全域已經刪除設定了,所以如果要切換身份上傳的話,都要重新輸入一次。

設定 git remote

如果這個專案還沒有設定 git remote

$ git remote add origin git@personal:你的github帳號/你的github資料夾.git

git@ 後面是剛剛上面的 Host

如果這個專案已經設定過 git remote

先進到這個專案的根目錄
進入 .git
打開 config

$ cd .git 
$ vim config

編輯此處:

[remote "github"]
         url = git@personal:你的github帳號/你的github資料夾.git
         fetch = +refs/heads/*:refs/remotes/github/*

改完記得要儲存。