使用 ssh-agent 中指定的密钥

使用 ssh-agent 中指定的密钥

沿着如何告诉 git 使用哪个私钥? 我想在特定情况下使用特定的 ssh 密钥。

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

我的具体情况:

  • 我有两个 github 用户,每个用户都有自己的密钥,我想 - 例如通过 ssh-config - 为每个克隆指定要使用的密钥:
   Host USER1.git
     Hostname github.com
     User git
     IdentityFile ~/.ssh/USER1.id_rsa

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

答案1

关键是要使用公钥文件内部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

答案2

我终于让它工作了:

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 的身份文件路径拼写错误,则会使用错误的密钥(USER2 的密钥)。

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

为了使其在使用代理转发的远程服务器上工作,请尝试下面@stijn-hoop 的建议(在此答案的评论部分)。

答案3

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

相关内容