[git]單臺機器使用多個SSH公鑰連線多個github遠端倉庫
摘要:預設情況下,單臺機器只能使用一個與賬戶對應的SSH金鑰連線github,這給多使用者連線多賬戶帶來不便
需求
- 機器A一直使用賬戶user1的SSH公鑰連線github。現在新建賬戶user2,希望在機器A也能夠以SSH方式連線到github
問題
-
預設情況下,即機器A一直使用賬戶user1。此時使用命令
$ git remote -v
可以檢視當前的遠端倉庫關聯如下:
[email protected]:user1Name/repositorie1Name.git (fetch) [email protected]:user1Name/repositorie1Name.git (push)
-
如果user2新建一個名為repositorie2Name的倉庫,此時想在機器A上使用命令
$ git push -u origin master
提交到遠端倉庫,會出現如下圖的錯誤。原因是機器A當前的公鑰是user1的,user2沒有許可權使用;想在user2的賬戶中新增user1的公鑰?也是不可能的,會提示公鑰已經被使用。
ERROR: Permission to user2Name/repositorie2Name.git denied to user2. fatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository exists.
解決方式
-
在user2的專案目錄中開啟命令列,執行命令:
ssh-keygen -t rsa -C "[email protected]" -f ~/.ssh/id_rsa_for_user2
,生成專屬user2的金鑰對,再進入user2的github賬戶將公鑰配置完成。 -
在
~/.ssh/
目錄下新建config
檔案,寫入以下內容:
#Default GitHub Host user1 HostName github.com User git IdentityFile ~/.ssh/id_rsa Host user2 HostName github.com User git IdentityFile ~/.ssh/id_rsa_for_user2
$ git remote set-url origin user1:user1Name/repositorie1Name.git $ git remote add origin2 user2:user2Name/repositorie2Name.git $ git remote -v
origin2user2:user2Name/repositorie2Name.git (fetch) origin2user2:user2Name/repositorie2Name.git (push) originuser1:user1Name/repositorie1Name.git (fetch) originuser1:user1Name/repositorie1Name.git (push)
-
驗證。可分別執行命令:
$ ssh -T user1
、$ ssh -T user2
,均出現連線成功提示,實現了多個SSH公鑰連線多個github遠端倉庫的需求。
Hi user1! You've successfully authenticated, but GitHub does not provide shell access.
Hi user2! You've successfully authenticated, but GitHub does not provide shell access.