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
我正在尝试 运行 在多台服务器上扮演 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