我使用RHEL 7.x作为我的控制服务器。我安装了Ansible 2.2.2.0。受管节点正在运行CentOS 6.由于不兼容,我无法升级Ansible。
如果没有Ansible,我可以从控制服务器ping托管服务器。从控制服务器,我可以SSH到受管节点,无需密码验证。使用来自控制服务器的Ansible,我无法ping受管服务器。为什么我不能使用基本的Ansible操作(例如,ansible -m ping all)?
以下是一些细节。作为root,我运行这个:
ansible -m ping all -vvvv
我看到了这个:
| UNREACHABLE! => { "改变了#34;:错误, " msg":"无法通过ssh连接到主机:OpenSSH_6.6.1,OpenSSL 1.0.1e-fips 2013年2月11日\ r \ ndebug1:读取配置数据 / etc / ssh / ssh_config \ r \ ndebug1:/ etc / ssh / ssh_config第56行:应用 * \ r \ npercent_expand的选项:未知键%C \ r \ n", "无法到达":真实
所以我重新启动了。
我再试一次。我看到了这个:
[警告]:[x.y.z.z]上的scp传输机制失败。使用 ANSIBLE_DEBUG = 1查看详细信息
x.y.z.z |失败! => { "失败":是的, " msg":"未能将文件传输到请以用户身份登录\" centos \"而不是用户\" root \" ./ ping.py:\nnn执行: 程序/ usr / bin / ssh主机x.y.z.z,用户(未指定),命令scp -v -t'请以用户身份登录\" centos \"而不是用户\" root \" ./ ping.py' \ nOpenSSH_6.6.1,OpenSSL 1.0.1e-fips 11月11日 2013 \ r \ ndebug1:读取配置数据 / etc / ssh / ssh_config \ r \ ndebug1:/ etc / ssh / ssh_config第56行:应用 * \ r \ ndebug1的选项:auto-mux:尝试现有的master \ r \ ndebug2: fd 3设置O_NONBLOCK \ r \ ndebug2:mux_client_hello_exchange:master 版本4 \ r \ ndebug3:mux_client_forwards:请求转发:0 local,0 remote \ r \ ndebug3:mux_client_request_session: 输入\ r \ ndebug3:mux_client_request_alive:输入\ r \ ndebug3: mux_client_request_alive:done pid = 10256 \ r \ ndebug3: mux_client_request_session:发送会话请求\ r \ ndebug1: mux_client_request_session:主会话ID:4 \ r \ n请登录为 用户\" centos \"而不是用户\" root \"。\ n" } [警告]: scp传输机制在[z.x.y.w]上失败。使用ANSIBLE_DEBUG = 1查看 详细信息
z.x.y.w |失败! => { "失败":是的, " msg":"未能将文件传输到请以用户身份登录\" centos \"而不是用户\" root \" ./ ping.py:\nnn执行: program / usr / bin / ssh host z.x.y.w,user(unspecified),command scp -v -t'请以用户身份登录\" centos \"而不是用户\" root \" ./ ping.py' \ nOpenSSH_6.6.1,OpenSSL 1.0.1e-fips 11月11日 2013 \ r \ ndebug1:读取配置数据 / etc / ssh / ssh_config \ r \ ndebug1:/ etc / ssh / ssh_config第56行:应用 * \ r \ ndebug1的选项:auto-mux:尝试现有的master \ r \ ndebug2: fd 3设置O_NONBLOCK \ r \ ndebug2:mux_client_hello_exchange:master 版本4 \ r \ ndebug3:mux_client_forwards:请求转发:0 local,0 remote \ r \ ndebug3:mux_client_request_session: 输入\ r \ ndebug3:mux_client_request_alive:输入\ r \ ndebug3: mux_client_request_alive:done pid = 10259 \ r \ ndebug3: mux_client_request_session:发送会话请求\ r \ ndebug1: mux_client_request_session:主会话ID:4 \ r \ n请登录为 用户\" centos \"而不是用户\" root \"。\ n" }
然后我假设Linux用户" centos" (su centos
)。然后我再次尝试了ansible命令。我运行了这个命令:
ansible -m ping all -vvvv
我看到了这个:
x.y.z.z | UNREACHABLE! => { "改变了#34;:错误, " msg":"无法通过ssh连接到主机:OpenSSH_6.6.1,OpenSSL 1.0.1e
-fips 2013年2月11日\ r \ ndebug1:读取配置数据/ etc / ssh / ssh_config \ r \ n n ebug1:/ etc / ssh / ssh_config第56行:为* \ r \ ndebug1应用选项: 自动MUX:
尝试现有的主\ r \ ndebug1:控制套接字 \" /home/centos/.ansible/cp/ansi
BLE-SSH-x.y.z.z-22-的centos \"不存在\ r \ ndebug2:ssh_connect: needpri
v 0 \ r \ ndebug1:连接到x.y.z.z [x.y.z.z]端口22. \ r \ ndebug2:f
d 3设置O_NONBLOCK \ r \ ndebug1:fd 3清除O_NONBLOCK \ r \ ndebug1:
...部分删除,因为它"看起来像垃圾邮件"
\ test \ r \ ndebug2:我们发了一个publickey数据包,等待回复\ r \ n \ ndebug1: Authenticat
可以继续的离子: publickey,gssapi-keyex,gssapi-with-mic \ r \ ndebug1:试试
私钥:/home/centos/.ssh/id_dsa\r\ndebug3:没有这样的身份: /家庭/ CentOS的
/.ssh/id_dsa:没有这样的文件或目录\ r \ n \ ndebug1:尝试私钥: /家庭/ CEN
tos / .ssh / id_ecdsa \ r \ n \ ndebug3:没有这样的身份: /home/centos/.ssh/id_ecdsa:没有苏 ch文件或目录\ r \ ndebug1:尝试私钥: /home/centos/.ssh/id_ed25519
\ r \ ndebug3:没有这样的身份:/home/centos/.ssh/id_ed25519:没有这样的 文件或可怕的 ctory \ r \ ndebug2:我们没有发送数据包,禁用方法\ r \ ndebug1: 没有更多的aut 认证方法尝试。\ r \ n许可拒绝 (公钥,GSSAPI-keyex,gssapi-
与-MIC)。\ r \ n&#34 ;, "无法访问":true}
我的ansible.cfg文件如下所示:
[defaults]
host_key_checking = False
library = ../extra_modules
roles_path = ../roles
pipelining = True
remote_user = centos
forks = 20
log_path = ./ansible.log
[ssh_connection]
control_path = ~/.ssh/ansible-ssh-%%C
有什么问题?为什么我不能ping Ansible受管节点?
答案 0 :(得分:1)
您能否分享一下Ansible hosts/inventory
文件和.ssh folder (ls ~/.ssh)
?
另外请尝试做类似的事情并通过cli传递ssh私钥和用户名变量:
ansiblie.cfg
[ssh_connection]
pipelining = True
ssh_args = -o ControlMaster=auto -o ControlPersist=30m -o StrictHostKeyChecking=no
control_path = /tmp/ansible-ssh-%%h-%%p-%%r
命令:
ansible -m ping all -i <inventory_file> --private-key=~/.ssh/<your pem key.pem> -u <login user ubuntu/centos>