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

Kum*_*mar 9 linux ssh jenkins ansible

当我尝试连接到Ansible主机时出现错误

我能够在本地主机(可访问)中ping ssh_connection,但在jenkins管道构建中却不能。

我已经尝试了几乎所有东西。

----------
[FPipeline] Running shell script
+ ansible all -m ping -vvv
ansible 2.4.0.0
config file = /var/lib/jenkins/workspace/FPipeline/ansible.cfg
configured module search path = 
[u'/var/lib/jenkins/.ansible/plugins/modules', 
u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /bin/ansible
python version = 2.7.5 (default, Aug  4 2017, 00:39:18) [GCC 4.8.5 20150623 
(Red Hat 4.8.5-16)]
Using /var/lib/jenkins/workspace/FPipeline/ansible.cfg as config file
Parsed /etc/ansible/hosts inventory source with ini plugin
META: ran handlers
Using module file /usr/lib/python2.7/site-
packages/ansible/modules/system/ping.py
<localhost> ESTABLISH SSH CONNECTION FOR USER: None
<localhost> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o 
KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-
mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 
ConnectTimeout=10 -o ControlPath=/var/lib/jenkins/.ansible/cp/8a5a4c6a60 
localhost '/bin/sh -c '"'"'echo ~ && sleep 0'"'"''
Using module file /usr/lib/python2.7/site-
packages/ansible/modules/system/ping.py
<192.168.219.131> ESTABLISH SSH CONNECTION FOR USER: None
<192.168.219.131> SSH: EXEC ssh -C -o ControlMaster=auto -o 
ControlPersist=60s -o KbdInteractiveAuthentication=no -o 
PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o 
PasswordAuthentication=no -o ConnectTimeout=10 -o 
ControlPath=/var/lib/jenkins/.ansible/cp/81147ff3f7 192.168.219.131 '/bin/sh 
-c '"'"'echo ~ && sleep 0'"'"''
<192.168.219.131> (255, '', 'Host key verification failed.\r\n')
server1 | UNREACHABLE! => {
"changed": false, 
"msg": "Failed to connect to the host via ssh: Host key verification  
failed.\r\n", 
"unreachable": true
}
<localhost> (255, '', 'Host key verification failed.\r\n')
localhost | UNREACHABLE! => {
"changed": false, 
"msg": "Failed to connect to the host via ssh: Host key verification 
failed.\r\n", 
"unreachable": true
}

----------
Run Code Online (Sandbox Code Playgroud)

您能帮我一下吗...

sfg*_*ups 10

在您的ansible配置文件中,/var/lib/jenkins/workspace/FPipeline/ansible.cfg添加以下行,然后再次进行测试。

[defaults]
host_key_checking = False
Run Code Online (Sandbox Code Playgroud)


kjp*_*ech 8

另一种禁用主机密钥签入的方法ansible是将ANSIBLE_HOST_KEY_CHECKING环境变量设置为False

export ANSIBLE_HOST_KEY_CHECKING=False

Ansible 文档


laz*_*lev 5

我建议添加所有主机一次(您应该验证 SSH 指纹),而不是完全禁用主机密钥检查。您需要使用启动 SSH 连接的用户(在您的情况下可能是 Jenkins 用户)运行这些命令:

# remove any old fingerprints for the host
ssh-keygen -R server.example.com
# add SSH fingerprints for the host
ssh-keyscan -t ecdsa,ed25519 -H server.example.com >> ~/.ssh/known_hosts 2>&1
Run Code Online (Sandbox Code Playgroud)


小智 1

机器自首次连接后是否已重建?

如果是这样,您需要从 SSH 中删除主机~/.ssh/known_hosts或添加以下选项:StrictHostKeyChecking=no