ssh-key 與 git帳戶配置以及多帳戶配置

轉載自:http://www.cnblogs.com/dubaokun/p/3550870.htmlhtml

 

ssh-key 與 git帳戶配置以及多帳戶配置

在使用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_rsassh

若是出現Could not open a connection to your authentication agent的錯誤,就試着先用如下命令:ide

1測試

2

ssh-agent bash

ssh-add id_rsa

添加完以後 登錄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

$ ssh -T git@github.com

Enter passphrase for key 'C:/Users/kunkun/.ssh/github.rsa':

Hi kunkun01! You've successfully authenticated, but GitHub does not provide shel

l access.

  

 多帳戶又分爲兩種狀況  

也能夠參考老外寫的 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 key:

$ cd ~/.ssh     # 切換到C:\Users\Administrator\.ssh

ssh-keygen -t rsa -C "mywork@email.com"  # 新建工做的SSH key

# 設置名稱爲id_rsa_work

Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa): id_rsa_work

二、新密鑰添加到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 git@github.com

Hi BeginMan! You've successfully authenticated, but GitHub does not provide shel

l access.

$ 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

$ git clone github2:kunkun01/Mywork.git

Cloning into 'Mywork'...

remote: Counting objects: 3, done.

remote: Total 3 (delta 0), reused 0 (delta 0)

Receiving objects: 100% (3/3), done.

Checking connectivity... done                                                                               

若是你只是經過這篇文章中所述配置了Host,那麼你多個帳號下面的提交用戶會是一我的,因此須要經過命令git config --global --unset user.email刪除用戶帳戶設置,在每個repo下面使用git config --local user.email '你的github郵箱@mail.com' 命令單獨設置用戶帳戶信息

相關文章
相關標籤/搜索