Git配置SSH Key(Git配置多個賬戶)
敲程式碼的小松鼠
Git配置SSH Key(Git配置多個賬戶)
# 前言
一般地,都會安裝好Git後直接設定一個全域性的config資訊,如下:
git config --global user.name "yyc" // 配置全域性使用者名稱,如 Github 上註冊的使用者名稱
git config --global user.email "[email protected]" // 配置全域性郵箱,如 Github 上配置的郵箱
但是有時候會遇到這樣的問題:
場景一:將同一個專案託管在多個平臺(Coding、GitHub、GitLab等)時,可能無法滿足需求,因為這兩個平臺不僅倉庫地址不一樣,並且賬戶名和密碼都是不同的。例如,我在github pages上面搭建的個人部落格,在國內訪問太慢,我需要將這個專案同時託管到Coding上,然後雙線部署到coding和github pages上。
場景 二:本地有兩個專案,分別使用不同的託管平臺。比如專案一使用GitHub託管,專案二使用GitLab託管。
本文配置GitHub一個賬戶,多個賬戶的配置方法相同。
# 配置SSH Key
# 清除全域性配置
在正式配置之前,我們先得把全域性配置給清除掉(如果你配置過的話),執行以下命令可以列出所有已經配置的全域性配置 :
git config --global --list
發現其中有 user.name
和 user.email
資訊,請執行以下命令將其清除掉:
git config --global --unset user.name git config --global --unset user.email
# 生成金鑰對
鑰對的儲存位置預設在 ~/.ssh
目錄(Windows 10系統在C盤User資料夾)下,我們先清理下這個目錄中已存在的鑰對資訊,即刪除其中的 id_rsa
、id_rsa.pub
之類的公鑰和金鑰檔案。注意:windows應該切換到~/.ssh/目錄下執行。
首先我們開始生成 github 上的倉庫鑰對,通過 -C
引數填寫 github 的郵箱:
ssh-keygen -t rsa -C “[email protected]”
回車後會提示Enter file in which to save the key
,在這裡輸入公鑰的名字(預設為 id_rsa
),這裡輸入 id_rsa_github
回車後系統將提示您輸入密碼以保護您的新 SSH 金鑰對。最好使用密碼,但也可以不需要密碼,一般就按兩次回車來跳過建立密碼。
# 新增 SSH Keys
將 id_rsa_github.pub
中的內容新增到 github的 SSH Keys 中,這個需要直接到網頁上設定裡面操作(點頭像-->setting)。可以使用命令先將檔案中的內容複製到貼上板:
cat ~/.ssh/id_rsa_github.pub | clip
# 新增私鑰
在上一步中,我們已經將公鑰新增到了 github伺服器上,我們還需要將私鑰新增到本地中,不然無法使用。新增命令也十分簡單,如下:
ssh-add ~/.ssh/id_rsa_github
新增完畢後,可以通過執行 ssh-add -l
命令驗證下。
執行ssh-add時出現Could not open a connection to your authentication agent
,則應先執行如下命令即可:
eval $(ssh-agent -s)
或者
ssh-agent bash
更多關於ssh-agent的細節,可以用 man ssh-agent 來檢視 。
# 管理金鑰
通過以上步驟,公鑰、金鑰分別被新增到 git 伺服器和本地了。下面我們需要在本地建立一個金鑰配置檔案,通過該檔案,實現根據倉庫的 remote 連結地址自動選擇合適的私鑰。
編輯 ~/.ssh
目錄下的 config
檔案,如果沒有,請建立。
配置內容如下:
Host github
HostName github.com
User yyc007
IdentityFile ~/.ssh/id_rsa_github
Host coding
HostName e.coding.net
User yyc007
IdentityFile ~/.ssh/id_rsa_coding
該檔案分為多個使用者配置,每個使用者配置包含以下幾個配置項:
- Host:倉庫網站的別名,隨意取
- HostName:倉庫網站的域名(PS:IP 地址應該也可以)
- User:倉庫網站上的使用者名稱
- IdentityFile:私鑰的絕對路徑
可以用 ssh -T
命令檢測下多個倉庫配置的 Host或HostName 是否是連通的:
ssh -T git@github
或者
ssh -T [email protected]
完成以上配置後,已經基本完成了所有配置。分別進入附屬於 github 和 coding的倉庫,此時都可以進行 git 操作 (或者可以對同一個專案分別操作兩個不同的遠端Git倉庫)。
# 為倉庫單獨配置使用者名稱資訊
完成以上配置後,其實已經基本完成了所有配置。但是如果你此時提交倉庫修改後,你會發現提交的使用者名稱變成了你的系統主機名。
這是因為 git 的配置分為三級別,System —> Global —>Local。System 即系統級別,Global 為配置的全域性,Local 為倉庫級別,優先順序是 Local > Global > System。
因為我們並沒有給倉庫配置使用者名稱,又在一開始清除了全域性的使用者名稱,因此此時你提交的話,就會使用 System 級別的使用者名稱,也就是你的系統主機名了。
因此我們需要為每個倉庫單獨配置使用者名稱資訊,假設我們要配置 github 的某個倉庫,進入該倉庫後,執行:
git config --local user.name "yyc"
git config --local user.email "[email protected]"
執行完畢後,通過以下命令檢視本倉庫的所有配置資訊:
git config --local --list
至此你已經配置好了 Local 級別的配置了,此時提交該倉庫的程式碼,提交使用者名稱就是你設定的 Local 級別的使用者名稱了。
本文轉自 https://ladybug.top/Git/git-multi-user-account-configuration---configure-SSH-key.html#前言,如有侵權,請聯絡刪除。