我的 ssh
配置在 /root/.ssh/config
中:
Host *
IdentityFile /root/.ssh/id_rsa_api
IdentityFile /root/.ssh/id_rsa_ui
我使用这些 key 能够克隆 GitHub 存储库。但是,只有第一个 IdentityFile
(API) 有效。第二,当我开始克隆时,它说 Repository not found
。当我像这样交换配置时:
Host *
IdentityFile /root/.ssh/id_rsa_ui
IdentityFile /root/.ssh/id_rsa_api
这样我可以克隆 UI,但不能克隆 API。结果,我看到 key 是正确的,但第二个 IdentityFile 总是被忽略。可能是什么问题?
我无法使用 ssh-add,因为我在 Dockerfile 中配置了 ssh
,并且在构建容器时 ssh-agent 没有运行。
最佳答案
除了您在问题中列出的两个键之外,您还有其他键吗? OpenSSH 服务器 sshd
将在多次失败的身份验证尝试后丢弃客户端。如果您有足够的 key ,您的客户端可能会尝试所有这些 key 并在通过您列出的所有 key 之前被丢弃。使用 -v
参数运行 ssh
将显示 ssh 尝试使用哪些 key 进行身份验证。
sshd_config参数 MaxAuthTries
确定客户端可以尝试验证的次数。默认值为 6。
如果这是问题所在,您可以通过设置 ssh_config 来避免它。参数 IdentitiesOnly
。这可以防止您的客户端使用不是来自 ssh 配置文件的身份。另一件需要考虑的事情是使用更具体的 Host
或 Match
指令,因此您只将 key 应用于应该使用 key 的特定主机。
关于linux - IdentityFile 在 ssh 配置中被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28283131/