Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ansible SSH连接失败_Ssh_Connection_Ansible - Fatal编程技术网

ansible SSH连接失败

ansible SSH连接失败,ssh,connection,ansible,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_s

我试图在多台服务器上运行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返回相同的错误

详细执行日志:

为用户建立SSH连接:USER 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-146351813.31-15663025033829
”&& 回声“
echo
$HOME/.ansible/tmp/ansible-tmp-146351813.31-15663025033829
” )“”““”

你能帮我个忙吗?如果我必须在本地模式(-c local)下使用ansible,那么它是无用的


我试图删除ansible_sudo_pass和ansible_ssh_用户,但没有帮助。

您需要更改
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\u ssh\u pass
&
ansible\u ssh\u用户
在最新版本的ansible中不工作。它已更改为
ansible\u user
ansible\u pass

尝试将主机文件修改为:

192.168.0.10
192.168.0.11
192.168.0.12

ansible_ssh_端口在重新加载vm时发生更改

==>默认值:正在启动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>
default ansible\u ssh\u host=127.0.0.1 ansible\u ssh\u port=2222 ansible\u ssh\u user='centos'ansible\u ssh\u private\u key\u文件=

转到您的playbook目录,运行ansible all-m ping或ansible ping-m“服务器组名称”

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

$ansible-m ping all-vvv

在Ubuntu或CentOS上安装ansible后。 你可以在下面留言。不要惊慌,您必须拥有对用户[
/home/user\u name/.ansible/tmp/
]的文件
/tmp
的访问权限。 “
身份验证或权限失败

这个预分解将解决这个问题

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

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

1.在目录文件夹中创建主机文件

[示例]

例1.com

例2.com

例3.com

二,。创建ansible playbook文件playbook.yml

---

-主持人:

-全部

-角色:

-示例

三,。让我们尝试使用多台服务器主机部署ansible playbook


ansible playbook playbook.yml-i清单/主机示例——用户流浪者

是!我缺少ansible\u ssh\u pass变量。现在一切都很有魅力。非常感谢你!根据这一点,它应该是
ansible\u-user
而不是
ansible\u-ssh\u-user
。如果搜索
ansible\u-ssh\u-user
,您可以在上述链接中找到,它在ansible 1.9中使用,但在ansible 2.0中,他们已将其更改为
ansible_用户
,但
ansible_ssh_用户
在两者中仍然有效。我拥有的
主机
文件只有IP地址。在我用
ansible\u ssh\u pass=vagrant ansible\u ssh\u user=vagrant
作为后缀后,ping开始工作。谢谢@Matthias这些变量适用于ssh模块和ansible 2.9(目前最新版本),两者都很好。请,请参阅,解释答案如何解决ssh连接问题。请解释答案与ssh连接问题有什么关系,以及为什么本地主机上的vagrant是相关的。
[Your_server ~]$ ansible -m ping all
rusub-bm-gt | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
Your_server | SUCCESS => {
    "changed": false,
    "ping": "pong"
}