我正在运行一个Ansible剧本,它带有一个细微的技巧,可以在任意端口转发的端口上工作(因此,我可以使用一台机器,而无需直接访问很多机器)。

我有一个预任务来更改ansible_port变量,因此当我开始运行实际任务和角色时,系统会提示我在某个随机端口上接受localhost的主机密钥。

因为我很幼稚并且不关心安全性,所以我希望ssh自动接受并重定向到/dev/null(或另一个用于记录的文件)。

这可能吗?

评论

您可以通过传递给ansible配置的ssh选项来完成此操作。

#1 楼

通常可以通过在ansible.cfg中设置以下值来完成此操作:

[defaults]
host_key_checking = False


如果不想修改ansible.cfg,则可以这样设置环境变量: >
export ANSIBLE_HOST_KEY_CHECKING=False


来源:http://docs.ansible.com/ansible/intro_getting_started.html#host-key-checking

评论


我正在使用MacOS并设置host_key_checking = False,但是仍然收到“警告:可能的DNS欺骗检测!”。我意识到早先连接到相同名称的目标主机,然后重新构建它之后,在./ssh/known_hosts中有一个旧密钥,因此我对此进行了修复。

–乍得朱利安诺
19年8月2日在1:19



请注意,尽管它看上去可能无法回答问题。这将停止提示以接受新的主机密钥,但会将每个主机密钥保存以供将来在known_hosts中使用。问题想要的是“ ssh自动接受并重定向到/ dev / null”。另一个答案提供了正确的解决方案。

– JBentley
20 Nov 24在14:53



#2 楼

在您的ansible.cfg文件中,您需要添加以下行:

ssh_args = -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no


评论


这应该工作。另外,查看ansible.cfg文件以获取更多设置:)

– Dawny33♦
17 Mar 30 '17 at 16:32

+1为Dawny的添加,因为使用Paramiko的用户将需要使用ansible.cfg

–林地猎人
17年3月30日在17:19

是否有适当的方法在剧本中进行设置?我已经尝试过ansible_ssh_common_args和ansible_ssh_extra_args,但它不会覆盖ansible.cfg中的内容。我有一个ansible.cfg,我将其用于其他所有操作,宁愿只是为此类剧本覆写那些参数,也不愿复制它进行更改。

– Peter Turner
17 Mar 30 '17 at 18:03

我不能说这些变量,Peter,但是您可以在此剧本的目录中放入经过修改的ansible.cfg,它将优先。

–林地猎人
17年3月30日在21:37

UserKnownHostsFile = / dev / null完全破坏ssh安全性

– mmv-ru
18年2月3日在19:19