轉載自:http://www.cnblogs.com/dubaokun/p/3550870.htmlhtml
在使用git的時候,git與遠程服務器是通常經過ssh傳輸的(也支持ftp,https),咱們在管理遠程分支以前 須要在本機上建立ssh-key密鑰對,並把其中的公鑰添加到github中。git
若是你就會一直在你的計算計算機使用一個遠程的Git服務器,而且帳號是一個,比較簡單,生成key的時候也沒有太大注意的地方,直接運行以下的第一步而後按回車就能夠了github
一、在 gitbash上運行 ssh-keygen -t rsa -C "Github帳戶郵箱"shell
二、接下來會提示輸入key的名字 默認名字爲id_rsa .默認就好了bash
三、而後會提示輸入口令,這裏口令與Github中的密碼無關,隨便輸入能夠爲空。服務器
4. 若是在第二步中的沒有從新命名的話,則忽略此步驟,ssh agent默認只讀取id_rsa,爲了讓SSH識別新的私鑰,需將其添加到SSH agent中 app
ssh-add id_rsa
ssh
若是出現Could not open a connection to your authentication agent的錯誤,就試着先用如下命令:ide
1測試 2 |
|
添加完以後 登錄Github 點擊 網頁右上側的 Account Setting 按鈕 - 選擇 ssh-keys 點擊Add SSH Key ,在title中輸入名字,而後將公約即id_rsa.pub添加到ssh-key處。
在git bash的命令行中輸入
ssh -T git@github.com 若是能正常訪問便可
1 2 3 4 |
|
也能夠參考老外寫的 Git config for mutiply SSH keys
一、針對同一個服務器的同用戶(好比 我平時開發開源的小東東,有的是一個帳號是公司的帳號對外開源項目用的,另外我本身也比較崇尚開源,因此本身也有了Github帳號)
2,針對不一樣服務器的用戶(如今pass平臺 部署應用都是經過git來管理的,好比常見的Openshift,Heroku appfog等,在這裏我也註冊了帳號)
在咱們訪問git服務器的時候,若是經過ssh的方式話,訪問不一樣的服務器要使用不一樣的ssh-key。通過在第一步的過程當中,在建立ssh-key的默認命名爲id_rsa,若是使用不一樣的帳戶的,必須得給不一樣的key設置不一樣的名字,不然若是繼續使用默認名字的話,會把以前的id_rsa覆蓋掉。
具體操做以下 user2是個人另一個Github帳戶
一、新建user2的SSH Key
1 2 3 4 5 |
|
二、新密鑰添加到SSH agent中
由於默認只讀取id_rsa,爲了讓SSH識別新的私鑰,需將其添加到SSH agent中:
ssh-add ~/.ssh/id_rsa_work
若是出現Could not open a connection to your authentication agent的錯誤,就試着用如下命令:
ssh-agent bash ssh-add ~/.ssh/id_rsa_work
(第二步 好像沒什麼做用)
三、修改config文件 將帳戶以及git服務器與對應的密鑰關聯。在~/.ssh目錄下找到config文件,若是沒有就建立:
touch config
而後修改以下: 個人config配置以下:
# 該文件用於配置私鑰對應的服務器 # Default github user(first@mail.com) Host github.com HostName github.com User git IdentityFile C:/Users/Administrator/.ssh/id_rsa # second user(second@mail.com) # 建一個github別名,新建的賬號使用這個別名作克隆和更新 Host github2 HostName github.com User git IdentityFile C:/Users/Administrator/.ssh/id_rsa_work
其規則就是:從上至下讀取config的內容,在每一個Host下尋找對應的私鑰。這裏將GitHub SSH倉庫地址中的git@github.com替換成新建的Host別名如:github2,那麼原地址是:git@github.com:funpeng/Mywork.git,替換後應該是:github2:funpeng/Mywork.git.
四、用記事本打開新生成的~/.ssh/id_rsa2.pub文件,將裏面的內容添加到GitHub後臺。
可不要忘了添加到你的另外一個github賬號下的SSH Key中。
五、測試:
1 2 3 |
|
$ ssh -T github2 Hi kunkun01! You've successfully authenticated, but GitHub does not provide shell access.
六、應用
測試成功,那麼我嘗試在個人work目錄下克隆我@126.com帳號下的遠程倉庫。以下:
1 2 3 4 5 6 |
|
若是你只是經過這篇文章中所述配置了Host,那麼你多個帳號下面的提交用戶會是一我的,因此須要經過命令git config --global --unset user.email
刪除用戶帳戶設置,在每個repo下面使用git config --local user.email '你的github郵箱@mail.com'
命令單獨設置用戶帳戶信息