【问题标题】:ansible SSH connection failansible SSH连接失败
【发布时间】:2016-09-09 20:38:38
【问题描述】:

我正在尝试在多台服务器上运行 ansible 角色,但出现错误:

致命:[192.168.0.10]:无法访问! => {“改变”:假,“味精”: "通过 ssh 连接主机失败。", "unreachable": true}

我的 /etc/ansible/hosts 文件如下所示:

192.168.0.10 ansible_sudo_pass='passphrase' ansible_ssh_user=user
192.168.0.11 ansible_sudo_pass='passphrase' ansible_ssh_user=user
192.168.0.12 ansible_sudo_pass='passphrase' ansible_ssh_user=user

我不知道发生了什么 - 一切看起来都很好 - 我可以通过 SSH 登录,但 ansible ping 返回相同的错误。

详细执行的日志:

为用户建立 SSH 连接:用户 SSH:执行 ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=user -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r 192.168.0.10 '/bin/sh -c '"'"'( umask 22 && mkdir -p "echo $HOME/.ansible/tmp/ansible-tmp-1463151813.31-156630225033829" && 回声“echo $HOME/.ansible/tmp/ansible-tmp-1463151813.31-156630225033829” )'"'"''

你能帮我吗?如果我必须在本地模式下使用ansible(-c local),那就没用了。

我尝试删除 ansible_sudo_pass 和 ansible_ssh_user,但没有帮助。

【问题讨论】:

    标签: ssh connection ansible


    【解决方案1】:

    您还需要更改 ansible_ssh_pass 或 ssh 密钥,例如我在我的库存文件中使用它:

    192.168.33.100 ansible_ssh_pass=vagrant ansible_ssh_user=vagrant
    

    之后我可以连接到远程主机:

    ansible all -i tests -m ping
    

    结果如下:

    192.168.33.100 | SUCCESS => {
        "changed": false,
        "ping": "pong"
    }
    

    希望对你有所帮助。

    编辑ansible_ssh_pass & ansible_ssh_user 在最新版本的 Ansible 中不起作用。它已更改为ansible_user & ansible_pass

    【讨论】:

    • 是的!我错过了 ansible_ssh_pass 变量。现在一切都像魅力一样。非常感谢!
    • 根据docs.ansible.com/ansible/intro_inventory.html 应该是ansible_user 而不是ansible_ssh_user
    • 如果您搜索ansible_ssh_user,那么您可以在提到的链接中找到,它在ansible 1.9 中使用但在ansible 2.0 中他们已将其更改为ansible_useransible_ssh_user 在两者都有。
    • 我拥有的hosts 文件只有IP 地址。在我用ansible_ssh_pass=vagrant ansible_ssh_user=vagrant 后缀后,ping 开始工作。谢谢!!
    • @Matthias 这些变量适用于 ssh 模块和 ansible 2.9(目前最新),两者都很好。请参阅here
    【解决方案2】:

    尝试将你的主机文件修改为:

    192.168.0.10
    192.168.0.11
    192.168.0.12
    

    【讨论】:

      【解决方案3】:

      重新加载虚拟机时 ansible_ssh_port 发生了变化。

      ==> 默认值:正在启动虚拟机...

      ==> 默认值:等待机器启动。这可能需要几分钟...

      default: SSH address: 127.0.0.1:2222
      
      default: SSH username: vagrant
      
      default: SSH auth method: private key
      

      所以我必须按如下方式更新库存/主机文件:

      default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 ansible_ssh_user='centos' ansible_ssh_private_key_file=<key path>
      

      【讨论】:

      • 请解释一下答案与 ssh 连接问题有什么关系,以及为什么 localhost 上的 vagrant 是相关的。
      【解决方案4】:
      mkdir /etc/ansible
      cat > hosts
      default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 ansible_ssh_user=vagrant ansible_ssh_private_key_file=.vagrant/machines/default/virtualbox/private_key
      

      转到您的 playbook 目录并运行 ansible all -m ping 或 ansible ping -m "server-group-name"

      【讨论】:

      • 请解释一下答案如何解决 ssh 连接问题。
      【解决方案5】:

      我遇到了这个问题,但原因与其他答案中记录的原因不同。我试图部署到的主机只能通过跳转框使用。最初,我认为这是因为 Ansible 无法识别我的 SSH 配置文件,但确实如此。我的解决方案是确保 SSH 配置文件中的用户与 Ansible playbook 中的用户匹配。这为我解决了这个问题。

      【讨论】:

        【解决方案6】:

        $ansible -m ping all -vvv

        在 Ubuntu 或 CentOS 上安装 ansible 之后。 您可以在下方留言。不要惊慌,您必须有权访问用户 [/home/user_name/.ansible/tmp/] 的文件 /tmp。 “Authentication or permission failure”。

        这个preconisaion将解决问题。

        [Your_server ~]$ ansible -m ping all
        rusub-bm-gt | SUCCESS => {
            "changed": false,
            "ping": "pong"
        }
        Your_server | SUCCESS => {
            "changed": false,
            "ping": "pong"
        }
        

        【讨论】:

          【解决方案7】:

          我使用 SSH 密钥访问服务器主机的最佳实践

           

          1.在inventories文件夹中创建hosts文件

          [示例]

          example1.com

          example2.com

          example3.com

           

          2。创建 ansible-playbook 文件 playbook.yml

          ---

          - 主机:

             - 全部

          - 角色:

             - 示例

          3。让我们尝试使用多个服务器主机部署 ansible-playbook

          ansible-playbook playbook.yml -i 库存/主机示例 --user vagrant

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-01-06
            • 1970-01-01
            • 1970-01-01
            • 2020-06-15
            相关资源
            最近更新 更多