Ansible Using a SSH password instead of a key is not possible because Host Key接続エラーの解決方法

環境

Red Hat Enterprise Linux release 9.2 (Plow)
Ansible 2.14.2
Python 3.11.2

実行コマンド
ansible $ansible-playbook -i /etc/ansible/hosts test.yml -k

警告メッセージが表示されます。

PLAY [Ansibleテスト] ****************************************************************************************************************************************

TASK [チェックディレクトリ] *********************************************************************************************************************************
fatal: [192.168.213.129]: FAILED! => {"msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this.  
    Please add this host's fingerprint to your known_hosts file to manage this host."}

PLAY RECAP **************************************************************************************************************************************************
192.168.213.129            : ok=0    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0

方法1
# vi /etc/ansible/ansible.cfg
以下の設定を記載する

[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null

説明
StrictHostKeyChecking=no
ホストのデータベースファイル(デフォルトでは~/.ssh/known_hosts)に存在しないときに確認なしに接続する。fingerprintは確認なしにホストのデータベースファイルに記録されていく。

UserKnownHostsFile=/dev/null
ホストのデータベースファイル。

方法2
#vi ~/.ssh/config
以下の内容を記載する

Host 192.168.213.*
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null

説明
ansibleを実行するControl MachineのユーザのSSH設定で、fingerprintのチェックを行わないようにする。

Ansible

Posted by arkgame