一臺機器上多賬戶管理——SSH Key切換解決push衝突

NO IMAGE

1 同一個郵箱

由於郵箱是識別的唯一手段,那麼自然的,這兩者採用同一個郵箱,生成的 public key 也會是同一個,上傳到 Github 或者 Gitlab 上面,在 Git 的配置中 ,設定好 Global 的配置 :

git config --global user.name 'ZhangXinNan'
git config --global user.email '[email protected]' 
git config --global core.editor vim

進行日常的開發是沒有問題的。
一個郵箱使用github參考github使用入門,寫得比簡單,如果有細節 不明白可以留言,我會補充或者 回答 。
實際生活中採用同一個郵箱的可能性並不是太大,這就引出了方案二.

2 不同郵箱

2.1 生成ssh-key

生成預設,Github使用

ssh-keygen -t rsa -b 4096 -C "[email protected]"

此命令建立了~/.ssh資料夾,同時生成了

id_rsa     
id_rsa.pub

生成公鑰、金鑰的同時指定檔名,Gitlab使用

ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitlab -C "[email protected]"

上傳public key 到github或者gitlab

以Github為例,過程如下:

登入github
點選右上方的Accounting settings圖示
選擇 SSH key
點選 Add SSH key
在出現的介面中填寫SSH key的名稱,填一個你自己喜歡的名稱即可,然後將上面拷貝的~/.ssh/id_rsa.pub檔案內容粘帖到key一欄,在點選“add key”按鈕就可以了。
新增過程github會提示你輸入一次你的github密碼 ,確認後即新增完畢。 上傳Gitlab的過程一樣,請自己操作。

2.2 配置config檔案

在 ~/.ssh目錄下,如果不存在,則新建 touch ~/.ssh/config檔案 ,檔案內容新增如下:

# Default github user([email protected]),注意User項直接填git,不用填在github的使用者名稱
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
# second user([email protected])
# 建一個gitlab別名,新建的帳號使用這個別名做克隆和更新
Host git.corpautohome.com
HostName git.corpautohome.com
User zhangxin0627
IdentityFile ~/.ssh/id_rsa.gitlab

配置完成後,符合 *.corp.xxx.com字尾的 Git 倉庫,均採取~/.ssh/id_rsa.gitlab 金鑰進行驗證,其它的採取預設的。

2.3 難證是否OK

由於每個託管商的倉庫都有唯一的字尾,比如 Github的是 [email protected]:*,所以可以這樣測試:

➜  ~ ssh -T [email protected]
The authenticity of host 'github.com (192.30.255.112)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.255.112' (RSA) to the list of known hosts.
Hi ZhangXinNan! You've successfully authenticated, but GitHub does not provide shell access.
➜  ~ ssh -T [email protected]
The authenticity of host 'git.corpautohome.com (10.168.100.80)' can't be established.
RSA key fingerprint is SHA256:SufpdWzsO0cdXqgj0/h141fs 7RjQamTq8so25Y60WI.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'git.corpautohome.com,10.168.100.80' (RSA) to the list of known hosts.
Welcome to GitLab, zhangxin0627!

看到這些 Welcome 資訊,說明就是 OK的了。
配置

2.4 全域性配置,Github倉庫中預設使用此配置

git config --global user.name 'ZhangXinNan'
git config --global user.email '[email protected]'

2.5 團隊專案配置,每次新建立一個專案,需要執行下

git config --local user.name 'ZhangXinNan'
git config --local user.email '[email protected]'

3 參考資料:

一臺機器上Github/Gitlab多賬戶管理SSH Key切換解決push衝突