Back

用 SSH 金鑰輕鬆搞定多個 GitHub 帳號

notion image
最近同時幫自己和公司寫了更多程式後,開始需要在電腦上頻繁切換個人用和工作用的 GitHub 帳號,來操作儲存庫,但是頻繁地登入登出和切換憑證真的很麻煩。
查了資料以後,發現最佳解法就是為每個帳號設定專屬的 SSH 金鑰,來讓電腦就能夠根據 Git remote URL 中使用的主機別名,自動選取正確的 SSH 私鑰進行驗證。

使用好處

  • 自動驗證:Git 可以根據您設定的遠端儲存庫 URL,自動選擇對應的 SSH 金鑰進行驗證。
  • 自動切換:設定後執行 push 或 pull 等操作時,無需手動輸入密碼或切換帳號。
  • 自動整合:VS Code 的 Git 功能會預設用系統的 SSH 設定,就可以無縫自動整合。

設定步驟

步驟一、為每個帳號產生獨立的 SSH 金鑰對

使用包含帳號識別資訊的檔案名(如 id_rsa_personal 和 id_rsa_work),將個人帳號和工作帳號分別產生不同的 SSH 公私鑰對。
打開終端機執行以下指令:
# 產生個人帳號的 SSH 金鑰 ssh-keygen -t rsa -b 4096 -C "[email protected]" -f ~/.ssh/id_rsa_personal # 產生工作帳號的 SSH 金鑰 ssh-keygen -t rsa -b 4096 -C "[email protected]" -f ~/.ssh/id_rsa_work
  • -t rsa:指定金鑰類型為 RSA。
  • -b 4096:使用 4096 位元的金鑰長度提高安全性。
  • -C "email":註解,通常使用與該 GitHub 帳號關聯的電子信箱。
  • -f ~/.ssh/id_rsa_xxx:指定金鑰儲存路徑與檔名。

步驟二、將公鑰加入對應的 GitHub 帳號

將每個帳號產生的公鑰複製並分別加到到個別的 GitHub 帳號設定中(SSH and GPG keys)。公鑰的檔案名稱通常以 .pub 結尾,如 ~/.ssh/id_rsa_personal.pub 和 ~/.ssh/id_rsa_work.pub。

步驟三、設定 SSH 設定檔

建立或編輯電腦中的 .ssh 資料夾中的 config 檔案(~/.ssh/config),這個檔案會用來告知電腦(SSH 客戶端)如何根據不同的主機別名(Host)使用不同的金鑰。
# 個人 GitHub 帳號設定 Host github.com-personal HostName github.com User git IdentityFile ~/.ssh/id_rsa_personal IdentitiesOnly yes # 工作 GitHub 帳號設定 Host github.com-work HostName github.com User git IdentityFile ~/.ssh/id_rsa_work IdentitiesOnly yes
  • Host github.com-xxx:定義一個自訂的主機別名。當我們在 Git URL 中使用這個別名時,SSH 就會套用此區塊的設定。
  • HostName github.com:實際連線的主機名稱。
  • User git:SSH 連線時使用的使用者名稱(對於 GitHub 固定為 git)。
  • IdentityFile ~/.ssh/id_rsa_xxx:指定主機別名應使用的私鑰檔案路徑。
  • IdentitiesOnly yes:確保 SSH 只使用 IdentityFile 指定的金鑰,避免嘗試其他預設金鑰導致驗證失敗。

步驟四、在 Git 中使用自訂主機別名

設定後,接下來跟 GitHub 互動時,需要使用在 ~/.ssh/config 中定義的 Host 別名,而不是直接使用 github.com。
  • 複製新儲存庫 Clone
  • 修改現有儲存庫的遠端 URL
    • 如果儲存庫已經存在,您需要更新其 origin (或其他遠端名稱) 的 URL。
      # 進入您的專案目錄 cd path/to/your/repo # 查看目前的 remote URL git remote -v # 修改為使用個人帳號的 SSH URL git remote set-url origin [email protected]:your-personal-username/your-repo.git # 或者修改為使用工作帳號的 SSH URL git remote set-url origin [email protected]:your-work-org/your-repo.git

總結

透過以上設定,電腦就能夠根據 Git remote URL 中使用的主機別名(github.com-personal 或 github.com-work),自動選取正確的 SSH 私鑰進行驗證,讓我們可以在同一個開發環境中輕鬆管理不同 GitHub 帳號下的專案,大幅提升開發效率。
logo陳重年 Chen Chung Nien
© Copyright 陳重年 Chen Chung Nien 2025. All rights reserved.
Build with
logoNotionDir