常用的主要 GitHub 帳號,主要是用來放置與管理自已的程式碼,但如果要加上測試用的 GitHub 帳號,在一台主機上設定就不容易了。 透過 SSH 的金鑰就可以達成 GitHub 多帳號在同一台主機上使用,透過將帳號名稱由終端機所輸入的變數名稱,來切換帳號與使用指錂令。
關於 SSH 的部份可以看到 [IS] 關於 SSH 一文了解

準備帳號

GmailGitHub 帳號代稱名Mac 金鑰帳號名金鑰密碼
main@gmail.commainid_rsa_main金鑰密碼可留空
work@gmail.comworkid_rsa_work金鑰密碼可留空

主分為 main 的主要帳號與測試或工作用的 work 帳號。


使用者帳號下的 .ssh 資料夾內的相關設定

如果在使用者帳號中,沒有 .ssh 資料夾,手動建立就好,這主要用於集中放置 SSH 設定的地方。

建立私鑰與公鑰

Mac Finder 使用快速鍵 command + G,輸入 ~/.ssh 後前往到路徑下。 另外也開啟終端機移到 .ssh 指定路路徑上 cd ~/.ssh。 main 帳號在 .ssh 資料夾裡,終端機輸入指令 指令輸入後會提示,要求輸入建立金鑰的公私鑰檔名。 建立公私鑰檔案檔名 id_rsa_main 輸入 id_rsa_main 並輸入密碼可使用二次 Enter 跳過 (公私鑰專案密碼,如果不想起可以考慮直接不輸入又或是使用像手機號碼給公私鑰連線時輸入使用) 另外一組帳號與公私金鑰設定也差不多同上。 建立公私鑰檔案檔名 id_rsa_main
公私鑰一定要在 ~/.ssh 路徑下操作 如果沒將 ssh 加入連結本機帳密,每次只要使用透過 SSH 通道來輸入指令 git push 時都會在問一次金鑰密碼。

取得或複製 SHA256 公鑰的內容

在建好公私鑰後,可以直接開啟檔案後面副檔名為 .pug 格式檔來操作, id_rsa_main.pubid_rsa_work.pub (使用文字編輯或是像 VSCode 的 IDE 軟體來取得裡面的 SHA256 的內容),另外也可以使用終端機指令 ssh -T <公鑰檔名> 來取得 SHA256 內容。 輸入後提示 中譯如下 輸入 yes 後,會再出現輸入金鑰密碼提示 輸入本機所建的 SSH 密碼後,就會出現取出 SHA256 成功訊息。

公鑰內容加入對應的 GitHub 帳號設定中

GitHub 頁面並登入後,點開最右方的選單選到 SettingsGitHub 多重帳號設定-1 到右方次選單點 SSH and GPG keys GitHub 多重帳號設定-2 選 SSH keys 的 New SSH key 按鈕,macOS 使用者可直接透過 terminal 進行複製 pbcopy < ~/.ssh/id_rsa_<公鑰名稱>.pubGitHub 多重帳號設定-3 Title 打上一個提供辨識的名稱即可,Key 輸入框內貼入剛剛複製的 KEY 然後點擊 Add Key 即可,點後 GitHub 會要求在輸入一次登入的密碼確任設定。 GitHub 多重帳號設定-5

設定 .ssh 資料夾裡的 config

~/.ssh 目錄底下建立一個名稱為 config 的檔案,主要是用來針對變數在輸入 SSH 指令時,可以用來做轉案帳號的動作。 開啟檔案後加入下面內容
特別注意到 Hostgithub.comgithub-work 二個部份,之後輸入指令時所切換帳號所使用的變數名稱。 IdentityFile ~/.ssh/<SSH kes 檔案名稱> 區分,可自行命名。

SSH 連線與更新 SSH 設定

加入 SSH 的金鑰密碼,使用變數呼叫 SSH 帳號後,不在提問 SSH 金鑰密碼

使用指令 ssh-add 將金鑰密碼加入,完成加入金鑰密碼後在 SSH 通道使用 GitHub 或是 git 的指令,就不會一直提問金鑰密碼。

查看 SSH 金鑰 key 是不是都加入了

測試 ssh 是否連結成功

清除 SSH 帳密舊設定


GitHub 帳號透過 SSH 金鑰更換相關設定

設定 Repository 不同身份

依據需求來指定不同 Repository 的身份,可以全域下的 GitHub 帳號區隔開,在專案資料夾裡的區域設定特定的使用者帳號。
若要設定專案中的區域使用者,在 git init 時就需要先設定 nameemail,在第一次嵌入 git commit 前就需要先設定完成,不然使用 git commit 也還會是全域的使用者。 心之聲:廢話,那是全域的使用者推的 commit 呀…

設定網址

git clone 設定

  • <<GitHub 帳號名>> 在 GitHub 預設的名稱為 github.com ,針對這預設的部份透過變數操作。
  • <<SSH 金鑰變數使用者帳號>> 為 SSH 所取代的變數帳號名,用來指定要操作 Git 指定帳號,例如果如要使用 github-work 帳號,就輸入成 git clone git@github-work:<<GitHub 帳號名>>/<<repos 專案名稱>>.git
  • : 路徑字符後都為 GitHub 的 repos 特定路徑,在 GitHub 開啟專案名稱後就會對應產生,例如是在 main 帳號下開一個 new_repos ,而就會成為 :main/new_repos.git

GitHub 遠端主機設定

比對 git clone 設定方式,將 <<SSH 金鑰變數使用者帳號>>: 路徑字符後的 GitHub repos 對應路徑比照更換。
此方法不限於使用在 GitHub,也不限於用在 Git

資料來源