SSH 可以,但 Ansible returns "unreachable"
SSH ok but Ansible returns "unreachable"
我使用密钥的 SSH 设置正确。
ssh admin@192.168.1.111
admin@DiskStation:~$
但是 Ansible returns 报错:
TASK [setup] *******************************************************************
<192.168.1.111> ESTABLISH SSH CONNECTION FOR USER: admin
<192.168.1.111> 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=admin -o ConnectTimeout=10 -o ControlPath=/Users/Shared/Jenkins/.ansible/cp/ansible-ssh-%h-%p-%r 192.168.1.111 '/bin/sh -c '"'"'( umask 22 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1479205446.3-33100049148171 `" && echo "` echo $HOME/.ansible/tmp/ansible-tmp-1479205446.3-33100049148171 `" )'"'"''
<192.168.1.111> PUT /var/folders/pd/8q63k3z93nx_78dggb9ltm4c00007x/T/tmpNJvc43 TO /var/services/homes/admin/.ansible/tmp/ansible-tmp-1479205446.3-33100049148171/setup
<192.168.1.111> SSH: EXEC sftp -b - -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=admin -o ConnectTimeout=10 -o ControlPath=/Users/Shared/Jenkins/.ansible/cp/ansible-ssh-%h-%p-%r '[192.168.1.111]'
fatal: [192.168.1.111]: UNREACHABLE! => {"changed": false, "msg": "SSH Error: data could not be sent to the remote host. Make sure this host can be reached over ssh", "unreachable": true}
有人可以帮助我吗?
Ansible returns "unreachable" 用于 SFTP 连接,而不是 SSH。
在目标节点(或中间的防火墙)上启用 SFTP,或在 ansible.cfg
:
中将 Ansible 配置为 use SCP
scp_if_ssh = True
我遇到了类似的 "unreachable" 错误,但在我的情况下,这是因为我的剧本文件以这种方式指定了主机:
[webservers]
ubuntu@123.456.789.111
这在过去对我们有用,所以大概这适用于某些 Ansible 版本,但不适用于我的版本 (2.0.0.2)。相反,我将其更改为文档推荐的内容:
[webservers]
123.456.789.111 ansible_user=ubuntu
现在 SFTP 连接不会失败。
请检查目标计算机上是否安装了 python。这是一个先决条件。
sudo apt install python3
sudo apt install python
sudo apt install python-minimal
经过多年的尝试和错误,现在我的 ansible.cfg
上总是有这些设置:
[defaults]
host_key_checking = false
[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o ServerAliveInterval=20
scp_if_ssh = True
[connection]
pipelining = true
-
pipelining
是我个人在处理多个问题时的偏好
主机。
ssh_args
处理挂起和超时,当您的目标远程连接不稳定时很有用。
我使用密钥的 SSH 设置正确。
ssh admin@192.168.1.111
admin@DiskStation:~$
但是 Ansible returns 报错:
TASK [setup] *******************************************************************
<192.168.1.111> ESTABLISH SSH CONNECTION FOR USER: admin
<192.168.1.111> 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=admin -o ConnectTimeout=10 -o ControlPath=/Users/Shared/Jenkins/.ansible/cp/ansible-ssh-%h-%p-%r 192.168.1.111 '/bin/sh -c '"'"'( umask 22 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1479205446.3-33100049148171 `" && echo "` echo $HOME/.ansible/tmp/ansible-tmp-1479205446.3-33100049148171 `" )'"'"''
<192.168.1.111> PUT /var/folders/pd/8q63k3z93nx_78dggb9ltm4c00007x/T/tmpNJvc43 TO /var/services/homes/admin/.ansible/tmp/ansible-tmp-1479205446.3-33100049148171/setup
<192.168.1.111> SSH: EXEC sftp -b - -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=admin -o ConnectTimeout=10 -o ControlPath=/Users/Shared/Jenkins/.ansible/cp/ansible-ssh-%h-%p-%r '[192.168.1.111]'
fatal: [192.168.1.111]: UNREACHABLE! => {"changed": false, "msg": "SSH Error: data could not be sent to the remote host. Make sure this host can be reached over ssh", "unreachable": true}
有人可以帮助我吗?
Ansible returns "unreachable" 用于 SFTP 连接,而不是 SSH。
在目标节点(或中间的防火墙)上启用 SFTP,或在 ansible.cfg
:
scp_if_ssh = True
我遇到了类似的 "unreachable" 错误,但在我的情况下,这是因为我的剧本文件以这种方式指定了主机:
[webservers] ubuntu@123.456.789.111
这在过去对我们有用,所以大概这适用于某些 Ansible 版本,但不适用于我的版本 (2.0.0.2)。相反,我将其更改为文档推荐的内容:
[webservers] 123.456.789.111 ansible_user=ubuntu
现在 SFTP 连接不会失败。
请检查目标计算机上是否安装了 python。这是一个先决条件。
sudo apt install python3
sudo apt install python
sudo apt install python-minimal
经过多年的尝试和错误,现在我的 ansible.cfg
上总是有这些设置:
[defaults]
host_key_checking = false
[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o ServerAliveInterval=20
scp_if_ssh = True
[connection]
pipelining = true
-
pipelining
是我个人在处理多个问题时的偏好 主机。 ssh_args
处理挂起和超时,当您的目标远程连接不稳定时很有用。