一、問題描述
- 當安裝完畢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