Linux ssh配置中忽略了IdentityFile

Linux ssh配置中忽略了IdentityFile,linux,git,ssh,Linux,Git,Ssh,我的ssh配置在/root/.ssh/config中: Host * IdentityFile /root/.ssh/id_rsa_api IdentityFile /root/.ssh/id_rsa_ui 我使用这些键来克隆GitHub存储库。但是,只有第一个IdentityFile(API)起作用。第二,当我开始克隆时,它说未找到存储库。当我交换配置时,如: Host * IdentityFile /root/.ssh/id_rsa_ui IdentityFile /roo

我的
ssh
配置在
/root/.ssh/config
中:

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代理未运行。

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

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

如果这是问题所在,可以通过设置参数
identiesonly
来避免。这将防止您的客户端使用非来自ssh配置文件的标识。另一个需要考虑的是使用更具体的<代码>主机< /COD>或<代码>匹配< /COD>指令,因此只对密钥所在的特定主机应用密钥。

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


所以我放弃了使用部署键。相反,我创建了一个ssh密钥,允许访问我的所有私有存储库。这样,我就有了一个单一的标识文件。

如果你只是将两个密钥加载到ssh代理中……这会改变行为吗?@larsks我如何处理现有密钥?我不确定我是否理解你的问题……ssh代理总是处理现有密钥。您可以使用
ssh add
添加它们,前提是代理设置正确。@larsks刚刚发现我不能使用ssh add。检查我的更新!