本文作者陳云峰航闺,轉(zhuǎn)載請注明。
Git多賬號多SSH-KEY使用教程
問題背景
Github使用SSH與客戶端連接备典。如果是單用戶阁将,生成密鑰對后变隔,將公鑰保存至github,每次連接時(shí)SSH客戶端發(fā)送本地私鑰(默認(rèn)~/.ssh/id_rsa)到服務(wù)端驗(yàn)證茵宪。單用戶情況下最冰,連接的服務(wù)器上保存的公鑰和發(fā)送的私鑰自然是配對的。
但是如果是多用戶(user1稀火,user2)暖哨,我們在連接到user2的帳號時(shí),user2保存的是自己的公鑰凰狞,但是SSH客戶端依然發(fā)送默認(rèn)私鑰篇裁,即user1的私鑰,那么這個(gè)驗(yàn)證自然無法通過赡若。不過达布,要實(shí)現(xiàn)多帳號下的SSH key切換在客戶端做一些配置即可。
解決方法
生成和添加新的SSH Key
首先在終端中cd到~/.ssh目錄下
cd ~/.ssh
生成新的SSH key:id_rsa_user2
ssh-keygen -t rsa -C 'user2@mail.com'
生成完后將新的SSH public key添加到網(wǎng)站github賬號的SSH key設(shè)置中逾冬。
默認(rèn)SSH只會讀取id_rsa黍聂,所以為了讓SSH識別新的私鑰,需要將其添加到SSH agent
ssh-add ~/.ssh/id_rsa_user2
該命令如果報(bào)錯(cuò):Could not open a connection to your authentication agent.無法連接到ssh agent身腻,可執(zhí)行ssh-agent bash命令后再執(zhí)行ssh-add命令产还。
修改SSH config文件
完成以上步驟后在~/.ssh目錄創(chuàng)建config文件,該文件用于配置私鑰對應(yīng)的服務(wù)器嘀趟。內(nèi)容如下:
# Default github user(`user1@mail.com`)
Host github.com
HostName github.com
User git
IdentityFile C:/Users/username/.ssh/id_rsa
# second user(`user2@mail.com`)
Host github-user2
HostName github.com
User git
IdentityFile C:/Users/username/.ssh/id_rsa_user2
Host隨意即可雕沉,方便自己記憶,后續(xù)在添加remote是還需要用到去件。
修改Git項(xiàng)目為新地址
配置完成后坡椒,在連接非默認(rèn)帳號的github倉庫時(shí),遠(yuǎn)程庫的地址要對應(yīng)地做一些修改尤溜,比如現(xiàn)在添加user2帳號下的一個(gè)倉庫test倔叼,則需要這樣添加:
git remote add test git@github-user2:user2/test.git
并非原來的git@github.com:user2/test.git
這樣每次連接都會使用id_rsa_second與服務(wù)器進(jìn)行連接。至此宫莱,大功告成丈攒!
修改郵箱地址(Author)
注意:github根據(jù)配置文件的user.email來獲取github帳號顯示author信息,所以對于多帳號用戶一定要記得將user.email改為相應(yīng)的email授霸。
git config --global user.email "user2@mail.com"
也可以不全局性修改巡验,只修改某個(gè)Git下面的email郵箱。
cd test
git config user.email "user2@mail.com"
參考文檔:
- http://help.github.com/win-set-up-git/
- http://help.github.com/multiple-ssh-keys/
- 如何管理git生成的多個(gè)ssh key秘鑰
本文作者陳云峰碘耳,轉(zhuǎn)載請注明显设。