使用ssh-agent中的指定密钥


11

遵循如何告诉git使用哪个私钥的方法? 我想在给定的情况下使用特定的ssh密钥。

我的问题是,即使我指定了“ -i something”,ssh也会按照添加顺序使用ssh-agent中的密钥。

我的具体情况:

  • 我有两个github用户,每个用户都有他们自己的密钥-例如通过ssh-config-为每个克隆指定要使用的密钥:

    主机USER1.git

    主机名github.com

    用户git

    IdentityFile〜/ .ssh / USER1.id_rsa

ssh -vt USER1.git

如果这是首先添加到ssh-agent的密钥,则仍将使用USER2.id_rsa。

Answers:


5

我终于得到它的工作:

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/configUSER1 有一个Identityfile路径输入错误,则将使用错误的密钥(USER2的密钥)。

我在BitBucket上获得了说明。它们应该适用于GitHub,因为唯一的区别是HostNamehttp : //confluence.atlassian.com/pages/viewpage.action?pageId=271943168#ConfiguringMultipleSSHIdentitiesforGitBashMacOSXLinux-CreateaSSHconfigfile

要使它在使用代理转发的远程服务器上工作,请尝试以下@ stijn-hoop的建议(在此答案的注释部分)。


3
对于重新代理转发你最后的评论,看到这样的回答: superuser.com/questions/273037/...
斯泰恩圈

1

IdentitiesOnly yes在.ssh / config中的这些主机下方使用。


1
但随后它将不使用该代理,并强迫我为所有github连接输入密码
svrist

1
是的,这就是它的工作方式。使用ssh-agent时,您无法在不同的键之间进行选择。一种方法是启动多个ssh-agent,并使用不同的包装器针对不同的github操作进行切换,或者仅在ssh-agent之间切换(更改SSH_AUTH_SOCK)
Cougar

6
上面的注释不正确-您可以从ssh-agent中选择身份。另请参阅我上面已经提到的答案, superuser.com
questions / 273037 /…

0

关键是要在指令内部使用公钥文件IdentityFile

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

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

如果我们在SSH配置中指定了私钥,则如果私钥已加密,SSH代理将无法选择正确的密钥。

关于stackexchange的类似问题:https : //unix.stackexchange.com/a/495785/264704

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.