能否将Ansible配置为尝试多个SSH密钥?
我知道,当运行带有公钥身份验证的SSH命令时,客户端将尝试它知道的所有SSH密钥,直到主机接受一个为止() 使用SSH在主机上运行Ansible命令时,似乎没有此功能:Ansible要求在Ansible.cfg中显式指定SSH私钥文件:能否将Ansible配置为尝试多个SSH密钥?,ssh,ansible,Ssh,Ansible,我知道,当运行带有公钥身份验证的SSH命令时,客户端将尝试它知道的所有SSH密钥,直到主机接受一个为止() 使用SSH在主机上运行Ansible命令时,似乎没有此功能:Ansible要求在Ansible.cfg中显式指定SSH私钥文件: private_key_file = /user/.ssh/id_rsa_mykey 在我的用例中,Ansible在Lando上的docker容器中运行。所有SSH密钥都从用户的SSH配置目录导入到容器中的已知路径。但是,我不一定知道Ansible需要的名称,
private_key_file = /user/.ssh/id_rsa_mykey
在我的用例中,Ansible在Lando上的docker容器中运行。所有SSH密钥都从用户的SSH配置目录导入到容器中的已知路径。但是,我不一定知道Ansible需要的名称,因为这是个人用户配置的
有没有办法让Ansible发出的SSH命令像SSH设计的那样尝试多个密钥
Ansible要求在Ansible.cfg中显式指定SSH私钥文件:
private_key_file = /user/.ssh/id_rsa_mykey
Ansible不要求您在Ansible.cfg
中提供私钥文件。由于ansible
只是调用ssh
,因此配置连接凭据的首选位置是~/.ssh/config
文件。在那里,您可以配置多个特定于主机的密钥:
Host host1
IdentityFile ~/.ssh/key-for-host1
Host host2
IdentityFile ~/.ssh/key-for-host2
或者您可以将其配置为按顺序尝试多个键:
Host *.example.com
IdentityFile ~/.ssh/maybe-this-one
IdentityFile ~/.ssh/okay-how-about-this-instead
当然,ssh
将使用ssh代理中存在的任何密钥
Ansible要求在Ansible.cfg中显式指定SSH私钥文件:
private_key_file = /user/.ssh/id_rsa_mykey
Ansible不要求您在Ansible.cfg
中提供私钥文件。由于ansible
只是调用ssh
,因此配置连接凭据的首选位置是~/.ssh/config
文件。在那里,您可以配置多个特定于主机的密钥:
Host host1
IdentityFile ~/.ssh/key-for-host1
Host host2
IdentityFile ~/.ssh/key-for-host2
或者您可以将其配置为按顺序尝试多个键:
Host *.example.com
IdentityFile ~/.ssh/maybe-this-one
IdentityFile ~/.ssh/okay-how-about-this-instead
当然,
ssh
将使用ssh代理中的任何密钥。谢谢@larsks。但是,如果我没有在ansible.cfg
中指定私钥文件,也没有在~/.ssh/config
中指定identificationfile
,那么单独发出ssh命令(不带ansible)将尝试~/.ssh/
中的所有密钥,直到找到一个有效的密钥。这就是我想用Ansible实现的目标。我无法按顺序尝试多个键,因为这些键可以命名为任何名称。这可能吗?我不相信ssh
会有这样的行为。如果在~/.ssh
中有任意名称的密钥,除非明确指示,否则ssh不会发现并使用它们。您的最佳选择可能是将您想要的所有密钥加载到您的ssh代理中。谢谢@larsks。但是,如果我没有在ansible.cfg
中指定私钥文件,也没有在~/.ssh/config
中指定identificationfile
,那么单独发出ssh命令(不带ansible)将尝试~/.ssh/
中的所有密钥,直到找到一个有效的密钥。这就是我想用Ansible实现的目标。我无法按顺序尝试多个键,因为这些键可以命名为任何名称。这可能吗?我不相信ssh
会有这样的行为。如果在~/.ssh
中有任意名称的密钥,除非明确指示,否则ssh不会发现并使用它们。您的最佳选择可能是将您想要的所有密钥加载到ssh代理中。