同一主機設置多個密鑰與不同github賬號關聯,或同一主機同一密鑰分別關聯github和gitlab


前言

github一把公鑰只能用於一個github賬戶,如果想在同一主機上給兩個屬於不同賬戶的倉庫提交時,必須在本地創建兩對公/私鑰匙,分別把兩把公鑰給兩個帳號。

或者有時候,你公司內部使用的gitlab,同時你個人又有github,你想用同一個公鑰將倉庫分別提交到github和gitlab。

多個密鑰管理多個github/gitlab

1 生成密鑰

生成第一把公鑰:
ssh-keygen -t rsa -C "kobe@email.com"
# 設置名稱為id_rsa_kobe
Enter file in which to save the key ((/home/xxxx/.ssh/id_rsa)): id_rsa_kobe
#添加到SSH agent中
ssh-add id_rsa_kobe

制造第二把公鑰:
ssh-keygen -t rsa -C "jordan@email.com"
# 設置名稱為id_rsa_jordan
Enter file in which to save the key ((/home/xxxx/.ssh/id_rsa)): id_rsa_jordan

#添加到SSH agent中
ssh-add id_rsa_jordan

2 將公鑰添加到你要提交的github和gitlab賬戶上

3 配置ssh

# 在.ssh目錄下配置config文件:
Host kobe
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_kobe
Host jordan
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_jordan

4 測試,如下表示OK

ssh -T kobe
Hi kobe! You've successfully authenticated, but GitHub does not provide shel l access.
ssh -T ranpop
Hi jordan! You've successfully authenticated, but GitHub does not provide shel l access.

5 用Host指定使用哪個公鑰操作遠程倉庫

對於kobe帳號下的倉庫:
git clone kobe:githubname/repository.git
(原地址是:git@github.com:githubname/repository.git,替換后應該是:kobe:githubname/repository.git)
對於ranpop帳號下的倉庫:
git clone jordan::githubname/repository.git
(原地址是:git@github.com:githubname/repository.git,替換后應該是:jordan:githubname/repository.git)

6 如果本地已有倉庫

# 如果已經使用原地址克隆過了,可以使用如下命令修改
git remote set-url origin kobe:githubname/repository.git
# 如果是本地新建的倉庫,可以使用如下命令添加
git remote add origin jordan:githubname/repository.git

同一密鑰分別關聯github和gitlab

1 生成密鑰方法同上

2 將公鑰添加到你要提交的github和gitlab賬戶上

3 配置ssh

# 在.ssh目錄下配置config文件:
Host github
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_kobe
Host gitlab
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_rsa_kobe

4 測試,如下表示OK

ssh -T github
Hi kobe! You've successfully authenticated, but GitHub does not provide shel l access.
ssh -T gitlab
Welcome to GitLab, @kobe!

5 本地同一倉庫分別關聯github和gitlab

git remote add github github:githubname/repository.git
git remote add gitlab gitlab:githubname/repository.git

6 可以使用github gitlab分別對不同上游進行操作

# 推送master分支到github
git push github master
# 推送master分支到gitlab
git push gitlab master


免責聲明!

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



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