我正在尝试使用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文件中。
我做错了什么或误解了什么?
答案 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)
该模块负责处理它。但有两个问题:
由于您在目标主机上运行任务,Ansible将首先尝试连接到主机,然后才能运行您的任务
此外,由于任务在目标主机上运行,您将指纹添加到该计算机上的know_hosts文件,而不是本地。
您需要在本地计算机上运行该任务,而不是在目标计算机上运行。
ansible localhost -m known_hosts -a "name=web state=present"
否则我应该对web进行密钥扫描并将其添加到known_hosts文件中。
我认为你无论如何都需要这样做,因为known_hosts
模块希望你传递密钥。它不会自动检测指纹。