Git配置SSH Key(Git配置多個賬戶)


敲代碼的小松鼠

Git配置SSH Key(Git配置多個賬戶)

# 前言

一般地,都會安裝好Git后直接設置一個全局的config信息,如下:

git config --global user.name "yyc" // 配置全局用戶名,如 Github 上注冊的用戶名
git config --global user.email "34782655@qq.com" // 配置全局郵箱,如 Github 上配置的郵箱

但是有時候會遇到這樣的問題:

場景一:將同一個項目托管在多個平台(Coding、GitHub、GitLab等)時,可能無法滿足需求,因為這兩個平台不僅倉庫地址不一樣,並且賬戶名和密碼都是不同的。例如,我在github pages上面搭建的個人博客,在國內訪問太慢,我需要將這個項目同時托管到Coding上,然后雙線部署到coding和github pages上。

場景 二:本地有兩個項目,分別使用不同的托管平台。比如項目一使用GitHub托管,項目二使用GitLab托管。

本文配置GitHub一個賬戶,多個賬戶的配置方法相同。

# 配置SSH Key

# 清除全局配置

在正式配置之前,我們先得把全局配置給清除掉(如果你配置過的話),執行以下命令可以列出所有已經配置的全局配置 :

git config --global --list

全局配置信息

發現其中有 user.nameuser.email 信息,請執行以下命令將其清除掉:

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

# 生成密鑰對

鑰對的保存位置默認在 ~/.ssh 目錄(Windows 10系統在C盤User文件夾)下,我們先清理下這個目錄中已存在的鑰對信息,即刪除其中的 id_rsaid_rsa.pub 之類的公鑰和密鑰文件。注意:windows應該切換到~/.ssh/目錄下執行。

首先我們開始生成 github 上的倉庫鑰對,通過 -C 參數填寫 github 的郵箱:

ssh-keygen -t rsa -C “34782655@qq.com”

回車后會提示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 git@github.com

完成以上配置后,已經基本完成了所有配置。分別進入附屬於 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 "34782655@qq.com"

執行完畢后,通過以下命令查看本倉庫的所有配置信息:

git config --local --list

至此你已經配置好了 Local 級別的配置了,此時提交該倉庫的代碼,提交用戶名就是你設置的 Local 級別的用戶名了。

本文轉自 https://ladybug.top/Git/git-multi-user-account-configuration---configure-SSH-key.html#前言,如有侵權,請聯系刪除。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM