红联Linux门户
Linux帮助

ansible:UNREACHABLE Failed to connect to the host via ssh.

发布时间:2016-12-01 14:54:28来源:linux网站作者:若闻
执行过程是,ansible接收动态的hosts与本地的私钥,通过无密码登录方式运行一个playbook,但是运行后始终出现如下问题: 
PLAY [120.27.26.*] ************************
TASK [setup] ************************
fatal: [120.27.26.*]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true}
to retry, use: --limit @/home/wxd/project/ansible_ui/projects/16/.tmp/fdeb167c-3705-11e6-8570-080027082f96.retry
PLAY RECAP ************************
120.27.26.*               : ok=0    changed=0    unreachable=1    failed=0
 
1.联想到后面如果接密码参数 --ask-pass时始终都能成功运行,所以才想到可能是密钥的问题,随后网上查了一下,需要改成600的权限才能正常运行:
chmod 600 /root/xxx.pem 
再运行就正常了。
2.如果在后面加上 -vvvv的参数,可以查看到详情报错如下:
Aborting, target uses selinux but Python bindings (libselinux-python) aren't installed!
执行:
yum install libselinux-python -y
安装后就可以运行了。
PLAY [218.75.159.*] ************************
TASK [setup] ************************
ok: [218.75.159.*]
TASK [include] ************************
included: /home/wxd/project/ansible_ui/projects/cdl2/playbooks/modify_sync_conf.yml for 218.75.159.*
TASK [insert some lines in /tmp/sync.conf, not in /usr/local/btsync/sync.conf] *
ok: [218.75.159.*]
PLAY RECAP ************************
218.75.159.*             : ok=3    changed=0    unreachable=0    failed=0
如果都配置好了,还是登录需要密码,可以在后面加个参数-v,以打印详细的连接状态,如下:
ssh root@1.2.3.4 -p 22 -v
注意也有可能是防火墙打开了,所以最好是检查一下,
# getenforce
如果打开就关闭:
# setenforce 0
可以在命令后面加上-vvv查看详细的输出结果,有可能是用户的私钥配置不正确。
也有可能是.ssh/config文件未配置正确。
有时在用paramiko部署密钥时会出现如下错误:
deploy Error: ('x.x.x.x', , )
一般原因是可能在跳板机中已经存在这个ip的相关信息,请把known_host这个文件删除,然后重试就好了。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/26484.html