一、问题描述
- 当安装完毕Ansible之后,一般需要以SSH的方式连接到需要进行管理的目标主机进行测试。但是报了以下问题:
[root@inmshgis24 ~]# ansible 10.130.0.33 -m ping
10.130.0.33 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).\r\n",
"unreachable": true
}
二、 原因分析
- 当我们将10.130.0.33主机作为管理主机,但在管理主机上并未添加目标节点(即需要管理的节点)的ssh认证信息。
三、解决步骤
- 管理主机节点生成SSH-KEY
[root@inmshgis24 ~]# ssh-keygen
注意:检查~.ssh/目录下是否出现生成的ssh密钥文件:id_rsa及id_rsa.pub
- 添加目标主机节点的SSH认证信息
[root@inmshgis24 ~]# ssh-copy-id root@目标节点IP
说明:
(1)root:是在目标节点上登录的用户;
(2)@:符号后面接目标节点IP即可;
(3)提示:输入目标节点root用户密码,输入即可;
(4)添加认证信息后,目标节点主机的~/.ssh/目录下将会出现一个authorized_keys文件,里面包含了ansible管理主机节点的公钥信息,可以检查一下是否存在。
- 确定目标主机节点的SSH认证信息都已正确添加
- 目标主机节点的~/.ssh/目录下存在管理节点的公钥信息后,再执行之前出错的ansible ping指令:
[root@inmshgis24 ~]# vi/etc/ansible/hosts
[test]
10.130.0.33
[root@inmshgis24 ~]# ansible 10.130.0.33 -m ping
补充:
-
期间报了这个错误:
Traceback (most recent call last): File “/usr/bin/ansible”, line 197, in (runner, results) = cli.run(options, args) File “/usr/bin/ansible”, line 163, in run extra_vars=extra_vars, File “/usr/lib/python2.6/site-packages/ansible/runner/init.py”, line 233, in init cmd = subprocess.Popen([‘ssh’,’-o’,‘ControlPersist’], stdout=subprocess.PIPE, stderr=subprocess.PIPE) File “/usr/lib64/python2.6/subprocess.py”, line 639, in init errread, errwrite) File “/usr/lib64/python2.6/subprocess.py”, line 1228, in _execute_child raise child_exceptionOSError: [Errno 2] No such file or directory -
解决如下:
[root@inmshgis24 ~]# yum install openssh-clients