摘要:默認(rèn)情況下烦绳,單臺機(jī)器只能使用一個(gè)與賬戶對應(yīng)的SSH密鑰連接github卿捎,這給多用戶連接多賬戶帶來不便【睹埽可利用config文件解決這一問題午阵。
需求
機(jī)器 A 一直使用賬戶 user1 的 SSH 公鑰連接 github。現(xiàn)在新建賬戶 user2享扔,希望在機(jī)器 A 也能夠以 SSH 方式連接到 github
問題描述
默認(rèn)情況下底桂,即機(jī)器 A 一直使用賬戶 user1。此時(shí)使用命令 $ git remote -v
可以查看當(dāng)前的遠(yuǎn)程倉庫關(guān)聯(lián)如下:
origin git@github.com:user1Name/repositorie1Name.git (fetch)
origin git@github.com:user1Name/repositorie1Name.git (push)
如果 user2 新建一個(gè)名為 repositorie2Name 的倉庫惧眠,此時(shí)想在機(jī)器 A 上使用命令 $ git push -u origin master
提交到遠(yuǎn)程倉庫籽懦,會出現(xiàn)如下的錯(cuò)誤。
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.
問題原因
機(jī)器 A 當(dāng)前的公鑰是 user1 的氛魁,user2 沒有權(quán)限使用暮顺;想在 user2 的賬戶中添加 user1 的公鑰?也是不可能的秀存,會提示公鑰已經(jīng)被使用捶码。
解決方案
- 在 user2 的項(xiàng)目目錄中打開命令行,執(zhí)行命令:
ssh-keygen -t rsa -C "second@email.com" -f ~/.ssh/id_rsa_for_user2
或链,生成專屬 user2 的密鑰對惫恼,再進(jìn)入 user2 的 github 賬戶配置公鑰。 - 在
~/.ssh/
目錄下新建config
文件澳盐,寫入以下內(nèi)容:
win10 路徑:
C:\Users\Admin\.ssh
macOS 路徑:
~/user/.ssh
#Default GitHub
Host user1
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host user2
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_for_user2
- 回到命令行尤筐,執(zhí)行命令:
$ git remote set-url origin git@user1:user1Name/repositorie1Name.git
,修改默認(rèn)的關(guān)聯(lián)洞就。也可以把原有的默認(rèn)關(guān)聯(lián)刪除盆繁,重新添加。 - 再繼續(xù)執(zhí)行命令:
$ git remote add origin2 git@user2:user2Name/repositorie2Name.git
旬蟋,新添加一個(gè) user2 的關(guān)聯(lián)油昂。 - 此時(shí)執(zhí)行命令:
$ git remote -v
,應(yīng)是以下結(jié)果:
origin2 git@user2:user2Name/repositorie2Name.git (fetch)
origin2 git@user2:user2Name/repositorie2Name.git (push)
origin git@user1:user1Name/repositorie1Name.git (fetch)
origin git@user1:user1Name/repositorie1Name.git (push)
- 驗(yàn)證倾贰∶岬可分別執(zhí)行命令:
$ ssh -T git@user1
、$ ssh -T git@user2
匆浙,均出現(xiàn)連接成功提示安寺。至此,實(shí)現(xiàn)了多個(gè) SSH 公鑰連接多個(gè) github 遠(yuǎn)程倉庫的需求首尼。
要加
git@
前綴挑庶,否則提示Permission denied (publickey)
(win10 環(huán)境言秸,macOS 未實(shí)測)
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.
注:github 添加的是如果是 deploy key,會顯示庫名稱迎捺,如:username/xxx