ansible SSH连接失败

时间:2016-05-13 15:09:47

标签: ssh connection ansible

我试图在多台服务器上运行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>建立用户的SSH连接:用户< 192.168.0.10>   SSH:EXEC ssh -C -vvv -o ControlMaster = auto -o ControlPersist = 60s -o   KbdInteractiveAuthentication = no -o   PreferredAuthentications = GSSAPI与 - 麦克风,GSSAPI-keyex,基于主机的,公钥   -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& #34;&&   echo" echo $HOME/.ansible/tmp/ansible-tmp-1463151813.31-156630225033829"   )'"'"''

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

我试图删除ansible_sudo_pass和ansible_ssh_user,但它确实没有帮助。

7 个答案:

答案 0 :(得分:39)

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

希望能帮助你。

答案 1 :(得分: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

答案 2 :(得分:2)

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

192.168.0.10
192.168.0.11
192.168.0.12

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

==>默认值:引导VM ...

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

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>

答案 5 :(得分:0)

$ansible -m ping all -vvv

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

这种先入为主将解决问题。

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

答案 6 :(得分:0)

对我来说是最佳实践,我正在使用SSH密钥访问服务器主机

1。在清单文件夹中创建主机文件

[示例]

example1.com

example2.com

example3.com

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

---

-主机:

-全部

-角色:

-示例

3。让我们尝试在多台服务器主机上部署ansible-playbook

ansible-playbook playbook.yml -i清单/主机示例-无业游民