我正在创建ec2实例并使用ansible脚本配置它们。我用过
[ssh_connection]
pipelining=true
在我的ansible.cfg文件中,但它仍然要求验证ssh指纹,当我输入yes并按回车键时,它无法登录到实例。 只是为了让您知道我正在使用ansible动态库存,因此我没有在主机文件中存储IP或DNS。 任何帮助将不胜感激。
TIA
答案 0 :(得分:2)
流水线操作对身份验证没有任何影响 - 它会将单个模块调用捆绑成一个更大的文件,以便在建立连接后进行传输。
为了不停止执行并提示您接受SSH密钥,您需要禁用严格的主机密钥检查,而不是启用流水线。
您可以通过导出ANSIBLE_HOST_KEY_CHECKING=False
或在ansible.cfg中将其设置为:
[defaults]
host_key_checking=False
后者可能更适合您的用例,因为它是持久的。
请注意,尽管这是一个处理ssh连接的设置,但它位于[defaults]
部分,而不是[ssh_connection]
部分。
==
当您键入yes
时无法登录,这似乎可能不是您唯一的问题,但您没有提供足够的信息来解决其余问题。
如果在禁用主机密钥检查后仍然存在连接问题,请编辑问题以手动将SSH输出添加到实例中,同时将-vvv
的ansible游戏输出添加到详细输出中。< / p>
排除故障时的第一步:
ansible_ssh_user
设置了正确的用户?ansible_ssh_private_key_file
是否与您在创建时分配实例的密钥对的私有部分相同?ansible_ssh_host
?答案 1 :(得分:0)
我认为你可以在这里找到答案:ansible ssh prompt known_hosts issue
基本上,当你运行ansible-playbook时,你需要使用参数:
ANSIBLE_HOST_KEY_CHECKING=False
确保添加了私钥(ssh-add your_private_key)。