我可以用ssh成功连接到我的服务器。 不过,当我试图通过Ansible cli执行命令时,它失败了:
ansible en2 -a "/sbin/reboot" -vvv Using /etc/ansible/ansible.cfg as config file <en2> ESTABLISH SSH CONNECTION FOR USER: None <en2> SSH: EXEC ssh -C -q -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/buzut/.ansible/cp/ansible-ssh-%h-%p-%r en2 '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1470744750.87-182962282383475 `" && echo ansible-tmp-1470744750.87-182962282383475="` echo $HOME/.ansible/tmp/ansible-tmp-1470744750.87-182962282383475 `" ) && sleep 0'"'"'' <en2> PUT /tmp/tmpampMBF TO /root/.ansible/tmp/ansible-tmp-1470744750.87-182962282383475/command <en2> SSH: EXEC sftp -b - -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/buzut/.ansible/cp/ansible-ssh-%h-%p-%r '[en2]' <en2> ESTABLISH SSH CONNECTION FOR USER: None <en2> SSH: EXEC ssh -C -q -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/buzut/.ansible/cp/ansible-ssh-%h-%p-%r -tt en2 '/bin/sh -c '"'"'LANG=fr_FR.UTF-8 LC_ALL=fr_FR.UTF-8 LC_MESSAGES=fr_FR.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1470744750.87-182962282383475/command; rm -rf "/root/.ansible/tmp/ansible-tmp-1470744750.87-182962282383475/" > /dev/null 2>&1 && sleep 0'"'"'' en2 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true }
您的输出中的所有内容看起来都正
Ansiblebuild立一个SSH连接,运行它的脚本(包含你的命令)并等待它的退出代码。
但是,您可以命令它发出一个/sbin/reboot命令来重启服务器。 在退出代码返回给Ansible和Ansible报告错误之前,SSH连接因此中断。
错误信息实际上有点误导,但意味着连接被中断。