第一天上班,你需要設定 SSH key,因為你將使用 SSH 來 clone 代碼 Repo。SSH 與 HTTP 的主要差別在於安全性和速度,而 SSH 比 HTTP 更加安全和快速。本篇文章的主要目的是介紹如何在一台電腦上使用 SSH 登入多個 GitHub 和 GitLab 帳戶。
不管你的公司使用 GitHub 或 GitLab 作為代碼 Repo 的託管平台,以下內容都適用。
讓我們開始吧~
首先,在終端機中使用以下命令生成 SSH key:
ssh-keygen -t rsa -b 4096 -C "[email protected]" -f ~/.ssh/gitlab_userName_rsa
藉由 -f
參數,我們可以直接指定 SSH 金鑰的路徑。我們可以通過不同的檔名區分不同的金鑰,方便識別。如果不使用 -f
參數,則會跳出提示,要求輸入 SSH 金鑰的檔案名稱。預設情況下,SSH 相關資料會被儲存在 ~/.ssh
目錄中。
此步驟會在您指定的位置中生成兩個檔案,一個是公鑰,一個是私鑰。稍後我們需要將公鑰添加到 GitHub 或 GitLab 中。
藉由config這個檔案,為每個主機指定不同的ssh金鑰。
在~/.ssh新增config檔案
使用以下命令進入 .ssh
目錄:
cd ~/.ssh
創建一個名為 config
的新檔案,然後打開它:
touch config
open config
在 config 檔案中,您可以為每個主機指定不同的 SSH 金鑰。
# GitHub account 1
Host github.com-account1
HostName github.com
User git
IdentityFile ~/.ssh/github_account1_rsa
# GitHub account 2
Host github.com-account2
HostName github.com
User git
IdentityFile ~/.ssh/github_account2_rsa# Gitlab account 2
Host gitlab.com-account1
HostName gitlab.com
User git
IdentityFile ~/.ssh/gitlab_account1_rsa
最後,幫這隻檔案設定權限
chmod 600 ~/.ssh/config
把剛剛新增的ssh key加進來
ssh-add ~/.ssh/gitlab_userName_rsa
ssh-agent 就會自動使用你的 SSH 金鑰進行身份驗證
你可以使用 ssh-add -l 命令來列出 ssh-agent 中已經添加的 SSH 金鑰。如果一切正常,你會看到你剛剛添加的 SSH 金鑰的指紋。
登錄到您的 GitHub 或 GitLab 帳戶,將您的 SSH 公鑰添加到帳戶的 SSH 金鑰列表中。
輸入以下指令讀取公鑰
cat ~/.ssh/step1創建的檔案名稱.pub
git clone git@gitlab.com-userabc:g5391/myCompany/my-repo.git
語法為
git clone <你在官網點git clone複製的那段>
不過要將預設的host改為剛剛你在config file寫好的host,它就會知道hostName是誰,要看哪份鑰匙。
Ps第一次連線到新主機時會跳出
The authenticity of host ‘gitlab.com (172.65.251.78)’ can’t be established.
ECDSA key fingerprint is SHA256:xxxx
這時請檢查他打印出來的fingerprint是對的,沒問題輸入yes就可,這步驟結束後他會將這個金鑰指紋添加到你的 known_hosts 檔案中(也是在~/.ssh中),以便將來進行自動驗證。
設定 SSH 金鑰可以幫助你更加安全、更加高效地使用 Git,特別是在需要同時使用多個 GitHub 或 GitLab 帳戶時。總體而言,我們利用不同檔名以及config檔來做到一台電腦多個平台多個帳號的SSH key管理,一旦設置成功,就可以使你的工作更加順暢。