首页 文章

ansible SSH连接失败

提问于
浏览
23

我正在尝试在多个服务器上运行ansible角色,但是我收到一个错误:

致命:[192.168.0.10]:无法访问! => {“已更改”:false,“msg”:“无法通过ssh连接到主机 . ”,“无法访问”: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返回相同的错误 .

来自详细执行的日志:

<192.168.0.10>为用户 Build SSH连接:user <192.168.0.10> SSH:EXEC 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“echo $ HOME / .ansible / tmp / ansible -tmp-1463151813.31-156630225033829“)''''''

你能以某种方式帮助我吗?如果我必须在本地模式(-c local)中使用ansible,那么它就没用了 .

我试图删除ansible_sudo_pass和ansible_ssh_user,但它没有帮助 .

6 回答

  • 0

    你需要更改 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"
    }
    

    希望对你有所帮助 .

  • 36
    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

  • 2

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

    192.168.0.10
    192.168.0.11
    192.168.0.12
    
  • 0

    重新加载vm时,ansible_ssh_port发生了变化 .

    ==>默认:启动VM ...

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

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

    所以我必须更新inventory / hosts文件,如下所示:

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

    我有这个问题,但原因与其他答案中记载的原因不同 . 我尝试部署的主机只能通过跳转框才能使用 . 最初,我认为这是因为Ansible没有识别我的SSH配置文件,但确实如此 . 我的解决方案是确保SSH配置文件中存在的用户与Ansible playbook中的用户匹配 . 这解决了我的问题 .

  • 4

    $ansible -m ping all -vvv

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

    这种预先配合将解决问题 .

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

相关问题