在没有提示的情况下将主机添加到known_hosts文件

时间:2016-01-11 09:33:30

标签: ansible

我正在尝试使用ansible

将已知主机添加到known_hosts文件中
vagrant@jedi:/vagrant$ ansible web -m known_hosts -a "name=web state=present"

paramiko: The authenticity of host 'web' can't be established.
The ssh-rsa key fingerprint is afb8cf4885468badb1a7b8afc16ac211.
Are you sure you want to continue connecting (yes/no)?

我不断得到上述提示。

我认为这个模块负责这个?否则我应该执行web的密钥扫描并将其添加到known_hosts文件中。

我做错了什么或误解了什么?

2 个答案:

答案 0 :(得分:8)

@udondan解释得非常好。再说一遍:

这是Ansible的默认行为。它将始终检查主机密钥。如果Ansible从未连接到该主机,则会出现此提示。这就是为什么你不能在不接受密钥的情况下调用known_hosts模块的原因。

如果不合适,您可以在host_key_checking=False上设置ansible.cfg

更安全的方法

最佳方法是设置此变量:export ANSIBLE_HOST_KEY_CHECKING=False,同时重新部署新服务器,然后将其删除。 unset ANSIBLE_HOST_KEY_CHECKING

主机密钥检查它是一项重要的安全功能。

详细了解host_key_checking

答案 1 :(得分:4)

该模块负责处理它。但有两个问题:

  1. 由于您在目标主机上运行任务,Ansible将首先尝试连接到主机,然后才能运行您的任务

  2. 此外,由于任务在目标主机上运行,​​您将指纹添加到该计算机上的know_hosts文件,而不是本地。

  3. 您需要在本地计算机上运行该任务,而不是在目标计算机上运行。

    ansible localhost -m known_hosts -a "name=web state=present"
    
      

    否则我应该对web进行密钥扫描并将其添加到known_hosts文件中。

    我认为你无论如何都需要这样做,因为known_hosts模块希望你传递密钥。它不会自动检测指纹。