如何让Ansible ping其他AWS服务器?

时间:2017-04-28 22:56:02

标签: linux ssh ansible ansible-2.x

我使用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受管节点?

1 个答案:

答案 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>