2016-07-02 26 views
1

我有一個工作回購,通常從我的工作機器訪問。在該機器上,我使用Git Bash中的ssh-keygen創建了一個SSH密鑰對。兩臺機器上的密鑰對是id_rsaid_rsa.pub如何從兩臺機器訪問一個Git倉庫?

如果我以我的工作用戶身份登錄,並嘗試將我的主鍵添加到工作用戶帳戶,我會被告知其他人已經註冊了該密鑰。如果我生成了第二個主密鑰,即id_rsa2id_rsa.pub2,我得到認證失敗。

從這裏我推測Git默認情況下只會在使用repo主機進行身份驗證時查找並使用原始文件id_rsa.pub,順便說一句,它是BitBucket。我猜我不知何故必須告訴Git哪個鍵用於哪個repo,或者什麼,但是現在我迷路了,並且在問怎麼做。

回答

1

您可以使用多個專用ssh密鑰使用~/.ssh/config文件。

Host fromhome 
    HostName yourServer 
    User git 
    IdentityFile "~/.ssh/id_rsa2" 

Host fromwork 
    HostName yourServer 
    User git 
    IdentityFile "~/.ssh/id_rsa" 

該文件可以引用這兩個私鑰並讓您使用2個不同的ssh URL。

從主頁:

cd /path/to/local/repo 
git remote set-url origin fromhome:<user>/yourrepo 

從工作:

cd /path/to/local/repo 
git remote set-url origin fromwork:<user>/yourrepo 

話雖這麼說,從家裏或工作,你只需要一組公共/私有密鑰的,所以你不需要配置文件。
如果您在家中重新生成專用密鑰id_rsa,您將能夠在BitBucket端註冊其新的公鑰。
在家裏,.ssh/config只有在你已經有一個用於別的東西的私有/公共ssh密鑰時纔有用。

Rahul Gupta問:

爲什麼我不能只是.ssh目錄複製到第二臺機器,並使用相同?

這被認爲是不好的做法:一個私鑰應該保持... 私人,如「繞不復制」。
另外,您可以輕鬆地撤銷私鑰(通過從.authorized_keys ssh服務器中刪除其授權密鑰)。如果在許多機器上使用了私鑰,那麼通過在服務器端刪除一個公鑰就可以以超出預期的方式撤銷訪問。