无法通过 ssh 连接到主机:主机密钥验证失败

Failed to connect to the host via ssh: Host key verification failed

我在执行 ansible-playbook 表单 Jenkins 时遇到问题,

喜欢:

PLAY [centos-slave-02] *********************************************************



TASK [Gathering Facts] *********************************************************

fatal: [centos-slave-02]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Host key verification failed.", "unreachable": true}

PLAY RECAP *********************************************************************

centos-slave-02            : ok=0    changed=0    unreachable=1    failed=0    skipped=0    rescued=0    ignored=0   

但我能够得到乒乓响应并且每次它都要求

Matching host key in /var/jenkins_home/.ssh/known_hosts:5  :
jenkins@c11582cb5024:~/jenkins-ansible$ ansible -i hosts -m ping centos-slave-02

Warning: the ECDSA host key for 'centos-slave-02' differs from the key for the IP address '172.19.0.3'

Offending key for IP in /var/jenkins_home/.ssh/known_hosts:2

Matching host key in /var/jenkins_home/.ssh/known_hosts:5

Are you sure you want to continue connecting (yes/no)? yes

centos-slave-02 | SUCCESS => {

    "ansible_facts": {

        "discovered_interpreter_python": "/usr/bin/python"

    },

    "changed": false,

    "ping": "pong"

}

谁能解决这个问题!提前致谢。

您在 jenkins-ansible 主机中的 known_hosts 文件已有主机 centos-slave-02 的条目。现在 centos-slave-02 主机的身份已更改,需要添加一个新条目。但是文件中的现有条目引发此警告。

Warning: the ECDSA host key for 'centos-slave-02' differs from the key for the IP address '172.19.0.3'

Offending key for IP in /var/jenkins_home/.ssh/known_hosts:2

Matching host key in /var/jenkins_home/.ssh/known_hosts:5

您可以手动编辑 /var/jenkins_home/.ssh/known_hosts 文件以删除此 centos-slave-02 主机的密钥或 运行 下面的命令,

ssh-keygen -R centos-slave-02

ansible 的解决方法是在 [defaults] 部分下的 ansible.cfg 中添加这一行,

[defaults]
host_key_checking = False

这将在建立 SSH 连接时禁用 HostKeyChecking

确保您没有在 jenkin build Exec 命令中使用 sudo。