我可以绕过Ansible中的主机密钥检查吗?


19

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

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

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

这可能吗?


您可以通过传递给ansible配置的ssh选项来实现。
吉里·克鲁达

Answers:


26

通常通过在中设置以下值来完成此操作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中有一个旧密钥,因此我对此问题进行了修复。
乍得朱利诺

21

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

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

您还可以在~/.ssh/config运行它的每台计算机上添加这些选项,如下所示:

Host *
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null

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

+1代表Dawny的加入,因为使用Paramiko的用户将需要使用ansible.cfg
Woodland Hunter

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

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

1
UserKnownHostsFile = / dev / null完全破坏ssh安全性
mmv-ru
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.