題 使用ssh-agent中的指定密鑰


沿著這條路線 如何告訴git使用哪個私鑰? 我想在給定的情況下使用特定的ssh密鑰。

我的問題是,即使我指定'-i something'ssh按照添加的順序使用我的ssh-agent中的鍵。

我的具體情況:

  • 我有兩個github用戶,每個用戶都有自己的密鑰 我想 - 例如通過ssh-config - 為每個克隆指定使用哪個鍵:

    主持人USER1.git

    主機名github.com

    用戶git

    IdentityFile~ / .ssh / USER1.id_rsa

ssh -vt USER1.git

仍然會使用USER2.id_rsa,如果這是首先添加到ssh-agent的密鑰。


9
2017-11-15 10:01


起源




答案:


我終於得到了它的工作:

Host USER1.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER1.id_rsa

Host USER2.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER2.id_rsa
  • 縮進計數。
  • ssh-add -l 並確保已添加兩個密鑰。
    • 複製/粘貼每個路徑 ssh-add -l 進入適當的行 ~/.ssh/config 避免錯別字。如果有的話 ~/.ssh/config USER1的identityfile路徑拼寫錯誤,然後將使用錯誤的密鑰(USER2的密鑰)。

我在BitBucket上得到了指示。他們應該為GitHub工作,因為唯一的區別是 HostNamehttp://confluence.atlassian.com/pages/viewpage.action?pageId=271943168#ConfiguringMultipleSSHIdentitiesforGitBashMacOSXLinux-CreateaSSHconfigfile

要使用代理轉發在遠程服務器上工作,請嘗試下面的@ stijn-hoop建議(在本答复的評論部分)。


4
2017-11-17 18:06



對於您的最後評論re agent forwarding,請參閱以下答案: superuser.com/questions/273037/... - Stijn Hoop


使用 IdentitiesOnly yes 在這些主機下面,在.ssh / config中。


1



但是它不會使用代理並迫使我為所有github連接輸入密碼 - svrist
是的,這是它的工作原理。使用ssh-agent時,無法在不同的鍵之間進行選擇。一種方法是啟動多個ssh-agent並在它們之間切換,或者使用不同的包裝器進行不同的github操作,或者只是在ssh-agents之間切換(更改SSH_AUTH_SOCK) - Cougar
上面的評論不正確 - 您可以從ssh-agent中選擇身份。另見我上面已經提到的答案, superuser.com/questions/273037/... - Stijn Hoop