ssh配置中忽略了IdentityFile参数。

5

我在 /root/.ssh/config 文件中配置了 ssh:

Host *
  IdentityFile /root/.ssh/id_rsa_api
  IdentityFile /root/.ssh/id_rsa_ui

我使用这些密钥来克隆GitHub存储库。然而,只有第一个IdentityFile(API)起作用。对于第二个,当我开始克隆时,它会显示存储库未找到。当我交换配置后,就像这样:

Host *
  IdentityFile /root/.ssh/id_rsa_ui
  IdentityFile /root/.ssh/id_rsa_api

我可以克隆UI,但无法克隆API。因此,我发现密钥是正确的,但第二个IdentityFile总是被忽略。问题可能是什么?

我不能使用ssh-add,因为我在Dockerfile中配置了ssh,而当容器构建时,ssh-agent没有运行。


如果您将两个密钥都加载到ssh代理中,那么会改变行为吗? - larsks
@larsks 我如何使用现有的键来做到这一点? - DarkLeafyGreen
我不确定我理解你的问题...ssh代理器总是与现有密钥一起工作。假设您已经正确设置了代理器,您可以使用ssh-add添加它们。 - larsks
@larsks刚刚发现我不能使用ssh-add。请检查我的更新! - DarkLeafyGreen
2个回答

5

除了你在问题中列出的两个密钥之外,你还有其他密钥吗?OpenSSH服务器sshd会在太多身份验证尝试失败后断开客户端连接。如果你有足够的密钥,你的客户端可能会尝试使用所有密钥,并在通过列出的所有密钥之前被断开连接。使用-v参数运行ssh将显示ssh尝试使用哪些密钥进行身份验证。

sshd_config参数MaxAuthTries确定客户端可以尝试进行身份验证的次数。默认值为6。

如果这是问题所在,你可以通过设置ssh_config参数IdentitiesOnly来避免这种情况。这将防止你的客户端使用未来自ssh配置文件的身份。另一个需要考虑的事情是使用更具体的HostMatch指令,以便只将密钥应用于应该使用该密钥的特定主机。


2

https://developer.github.com/guides/managing-deploy-keys/#deploy-keys

部署密钥只授予对单个存储库的访问权限。有更复杂的项目可能需要从同一服务器提取许多存储库

因此,我放弃使用部署密钥。相反,我创建了一个SSH密钥,允许访问我所有的私有存储库。这样我只需要一个IdentityFile。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接