我在/root/.ssh/config
内的ssh配置:
Host *
IdentityFile /root/.ssh/id_rsa_api
IdentityFile /root/.ssh/id_rsa_ui
我使用此键可以克隆github repos。但是只有第一个IdentityFile
(api)有效。当我开始克隆时,它会说Repository not found
。当我交换配置时:
Host *
IdentityFile /root/.ssh/id_rsa_ui
IdentityFile /root/.ssh/id_rsa_api
这样我可以克隆UI而不是API。因此,我发现密钥是正确的,但第二个IdentityFile总是被忽略。任何想法是什么问题?
我无法使用ssh-add,因为我在Dockerfile中配置了ssh,并且在构建容器时ssh-agent没有运行。
答案 0 :(得分:3)
除问题中列出的两个键外,您还有其他任何键吗?在经过多次失败的身份验证尝试后,OpenSSH服务器sshd
将丢弃客户端。如果您有足够的密钥,您的客户可能会尝试所有这些密钥,并在它通过您列出的所有密钥之前被丢弃。使用ssh
参数运行-v
将显示ssh尝试使用哪些密钥进行身份验证。
sshd_config参数MaxAuthTries
确定客户端可以尝试进行身份验证的次数。默认值为6.
如果出现此问题,您可以通过设置ssh_config参数IdentitiesOnly
来避免此问题。这可以防止您的客户端使用不是来自ssh配置文件的身份。另一件需要考虑的事情是使用更具体的Host
或Match
指令,因此您只需将密钥应用于应使用密钥的特定主机。
答案 1 :(得分:1)
https://developer.github.com/guides/managing-deploy-keys/#deploy-keys
部署密钥仅授予对单个存储库的访问权限。更复杂 项目可能有许多存储库可以拉到同一台服务器
所以我使用部署密钥删除了。相反,我创建了一个ssh密钥,允许访问我的所有私有存储库。这样我就有一个IdentityFile。