ansible SSH连接失败

ansible SSH connection fail

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

fatal: [192.168.0.10]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via 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 returns 同样的错误。

详细执行的日志:

<192.168.0.10> ESTABLISH SSH CONNECTION FOR USER: 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,但没用。

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

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

192.168.0.10
192.168.0.11
192.168.0.12

重新加载虚拟机时 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>
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"

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

$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"
}

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

1.Create 清单文件夹中的主机文件

[示例]

example1.com

example2.com

example3.com

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

---

- 主机:

- 全部

- 角色:

- 示例

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

ansible-playbook playbook.yml -i inventories/hosts 示例 --user vagrant