不检查SSH主机fingerprint

默认情况下,ansible需要接受服务器的SSH fingerprint到known_hosts才能访问,并且由于ansible没有使用系统的ssh客户端,所以并不会因为/etc/ssh/ssh_config中设置了以下配置就不校验SSH服务器

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

解决的方法是先使用ssh-keyscan扫描主机将host fingerprint添加

for i in $(cat hostnames.txt)
do
ssh-keyscan $i >> ~/.ssh/known_hosts
done

另一种方法是设置环境变量ANSIBLE_HOST_KEY_CHECKING=False

export ANSIBLE_HOST_KEY_CHECKING=False
ansible-playbook -i host_ip_list ansible_example_playbook.yaml

高版本ansible还可以使用-e 'host_key_checking=False',例如

ansible-playbook -e 'host_key_checking=False' -i host_ip_list ansible_example_playbook.yaml

或者在配置文件 /etc/ansible/ansible.cfg or ~/.ansible.cfg 中设置

[defaults]
host_key_checking = False

参考

Last updated