Git 多賬號 SSH 配置

7tiny發表於2023-02-16

【前言】

在企業工作環境中,我們一般會用企業的github或gitlab等賬號,同時也會配置相關的ssh訪問方式。

當我們想要同時操作個人github或gitlab倉庫時,就無法重複使用現有的ssh公鑰配置在個人賬號裡。

一種解決辦法是不使用ssh方式,直接使用https方式訪問個人倉庫是可行的,但我們今天介紹一種方法可以讓我們在同一臺電腦中配置兩個ssh訪問。

【配置SSH】

生成新的RSA金鑰對

我們無法在github站點不同賬戶配置中使用同一個RSA公鑰,將已經新增過的公鑰再次新增到另一個不同賬戶時,會提示金鑰已經被使用過了,這時候我們需要新建立一個金鑰對

開啟cmd輸入命令:ssh-keygen -t rsa -C "隨意註釋字元" -f C:/Users/{username}/.ssh/{keyname}一路回車,生成新的金鑰對

其中兩個引數,username 為個人電腦賬戶名

Git 多賬號 SSH 配置

keyname 自行給新的金鑰對起一個名字,例如我輸入 7tiny,那麼生成出來的金鑰對如下:

Git 多賬號 SSH 配置

將新公鑰新增到將要訪問的 github 賬戶

這一步沒啥說的,如果不清楚如何配置,參考歷史文章 --> Git SSH 認證配置 - 7tiny - 部落格園 (cnblogs.com)

新增本地配置檔案

在 .ssh 目錄新增配置檔案,檔名 config 注意沒有副檔名

Git 多賬號 SSH 配置

檔案內容也非常簡單,按如下配置即可

Host 7tiny
    HostName github.com
    User git
    IdentityFile ~/.ssh/7tiny

檔案說明

Host:標識,隨意取一個即可

HostName:倉庫站點域名,我使用的是 github,因此域名填 github.com

User:預設git即可

IdentityFile:填剛才生成時的金鑰對地址

拉取新賬戶的倉庫原始碼

我們透過ssh方式直接克隆新倉庫的原始碼

克隆時,可以指定採用新的ssh金鑰配置此倉庫,將 git@github.com 替換為前面配置的 Host 名稱(本文用的是7tiny)

例如:git clone 7tiny:dotnet/corefx.git

當然,不這麼指定也是可以成功 clone 的,clone後,開啟本地倉庫目錄下的 .git 資料夾

Git 多賬號 SSH 配置

修改 config 配置檔案裡的 url,將 github.com 換為 Host 名稱(本文用的是7tiny),和上述clone時配置效果是一樣的

Git 多賬號 SSH 配置

【說一點題外話】

經過上述配置,git的正常操作都已經ok了,但是還有點小細節問題。

我們提交程式碼採用的賬號和郵箱用的都是 global 配置裡的,這樣在提交程式碼時,個人倉庫裡的提交記錄就會被識別為公司賬號的提交,這樣首頁是不會顯示小綠點的,因為不算“自己”的貢獻

這個處理辦法就是將當前程式碼倉庫的姓名和郵箱換成個人賬號的姓名和郵箱

方法一、透過命令列配置

首先進入當前倉庫地址開啟 git 命令列,透過 git config 命令修改本地姓名郵箱

git config user.name "xxx name"
git config user.email "aaa@bbb.xx.com"

方法二、開啟 config 配置檔案直接修改

開啟原生程式碼倉庫目錄下的 .git 資料夾下的 config 配置檔案

Git 多賬號 SSH 配置

新增 user 節點

[user]
	name = sevenTiny
	email = xxx@qq.com

Git 多賬號 SSH 配置

儲存即可

用任意一種方式配置好後,可以透過git config --local --list 檢視當前倉庫配置

透過 git config --global --list 檢視全域性配置,以確保全域性配置沒有被改錯(local 和 global 不使用同一個姓名郵箱情況下)

後續提交的程式碼將會用此姓名和郵箱操作倉庫,當然,小綠點也是“你”的了