ssh(代理)可以使用两个单独的身份吗?

ssh(代理)可以使用两个单独的身份吗?

我使用 Ubuntu 14.10 发行版和两个私钥,一个加密 ( ~/.ssh/E.key),一个未加密 ( ~/.ssh/NE.key),我用它们分别访问两个 github 存储库repoErepoNE.

我使用了两个不同域的别名的常见技巧gitbhub.com,这两个域映射到各自的 ssh 密钥。

内容(仅相关)~/.ssh/config

Host github.com-E
  Hostname github.com
  IdentityFile ~/.ssh/E.key

Host github.com-NE
  Hostname github.com
  IdentityFile ~/.ssh/NE.key

本地存储库配置的内容(仅相关):

# /path/to/repoE/.git/config:

[remote "origin"]
  url = [email protected]:organizationE/repoE.git

# /path/to/repoNE/.git/config:

[remote "origin"]
  url = [email protected]:organizationNE/repoNE.git

我使用ssh-add, 这样我就不需要输入密码来访问repoE.

问题是,显然,只有我添加的第一个密钥被使用(我可以从 ssh 客户端日志中看到报价)。

例如,这是一个示例运行:

$ ssh-add ~/.ssh/E.key

# I can now access repoE, but not repoNE

$ ssh-add ~/.ssh/NE.key

# Still the same (I can access repoE, but not repoNE)

$ ssh-add -D

$ ssh-add ~/.ssh/NE.key

# I can now access repoNE, but not repoE

$ ssh-add ~/.ssh/E.key

# Still the same (I can access repoNE, but not repoE)

答案1

gpg-agent而且很可能ssh-agent也不关心密钥属于什么。密钥通过其 keygrip 进行识别(纯密钥材料的指纹,而例如 OpenPGP 指纹位于密钥材料和一些附加数据(如创建日期)之上)。

您可以在配置文件中启用/增加日志记录~/.gnupg/gpg-agent.conf。相关选项有

  • --debug-level
  • --log-file

要激活此更改,gpg-agent要么需要SIGHUP(对于某些已给定选项的更改,请参阅手册页中的“SIGHUP”部分),要么必须重新启动。

您还可以在配置文件中启用日志记录,ssh以查看.也可能有帮助。相关选项有:git pushsshstrace -f -e trace=execve git push

  • log_file
  • LogLevel

相关内容