2012-01-19 90 views
31

GitHub用戶,如何使用多個ssh密鑰

我是github上的新手,並且在安裝git時遇到了一些問題。 我有2賬戶在github不同的用戶和我的系統上設置的git 2倍

首先/.ssh文件夾(如常)(含有id_rsa其複製在第一 帳戶)
第二/.ssh/new文件夾(包含id_rsa其複製在 第二賬戶)

現在推我怎樣才能ssh密鑰之間進行切換的時間?

因爲如果我想推第二個帳戶,它將使用.ssh鍵而不是.ssh/new,並給我錯誤。

如果我在這裏理解錯誤,請讓我正確。

謝謝。

+1

我不知道爲什麼會要放置在'〜/「第二」鍵。 ssh'子文件夾?爲什麼不堅持以數字爲後綴的約定,如:'id_rsa','id_rsa.1','id_rsa.2'等... –

+0

@JuicyScripter只是想分離,你也是正確的,但我需要告訴git需要使用哪個密鑰以及如何使用? –

回答

43

(我已經投票決定關閉這是一個可能的重複,但我還不如仍要添加了類似的回答。)

當使用SSH傳輸,GitHub的識別您作爲基於SSH密鑰的用戶你用來驗證。所以,你需要確保git使用一個SSH密鑰作爲一個存儲庫,另一個作爲另一個。

我要去假設:

  1. 你有一個GitHub的賬戶叫user1,你已經加入到該帳戶與您本地的私鑰/home/whoever/.ssh/id_rsa的公鑰。假設您有興趣作爲user1訪問的存儲庫在GitHub上是user1/whatever
  2. 您有第二個GitHub帳戶,名爲user2,並且您已將與您的本地私鑰/home/whoever/.ssh/new/id_rsa對應的公鑰添加到該帳戶。假設您有興趣作爲user2訪問的存儲庫在GitHub上是user2/whatever

做處理這種情況的最簡單的方法是創建一個新的「遠程」(即用於遠程倉庫暱稱)每個倉庫,其中主機名是在每個遠程的URL實際上是一個別名,你」已經設置在~/.ssh/config。 (如果配置文件不存在,你必須創建它。)

例如,在~/.ssh/config文件中的一個條目可能看起來像:

Host github-as-user1 
    HostName github.com 
    User git 
    IdentityFile /home/whoever/.ssh/id_rsa 

然後你就可以添加遠程叫gh-user1,例如:

git remote add gh-user1 [email protected]:user1/whatever.git 

...然後,如果你想使用~/.ssh/id_rsa關鍵看你master分支推到倉庫user1/whatever在GitHub上,你可以這樣做:

git push gh-user1 master 

爲了推動與其他用戶(user2)到第二倉庫,你需要爲您添加第二個別名~/.ssh/config文件。例如:

Host gh-as-user2 
    HostName github.com 
    User git 
    IdentityFile /home/whoever/.ssh/new/id_rsa 

然後推到第二庫爲不同的用戶,你可以這樣做:

git push gh-user2 master 
+2

因此,git不會與.ssh/config配合使用?爲什麼不能使用標準ssh參數? -i .ssh/my_github_key –

+1

我想補充一點,這可以通過'ssh -T git @ gh-as-user1'和'ssh -T git @ gh-as-user1'進行測試。 如果它不起作用,請嘗試運行'ssh-add〜/ .ssh/new/id_rsa'或'ssh-add〜/ .ssh/id_rsa' –

+3

如果您使用的密鑰存在於〜/之外。 ssh目錄,除非你這樣做:'ssh-add/path/to/key' –