如何修复“无法访问"当通过 ssh 使用 ansible ping windows 时? [英] How to fix "Unreachable" when ping windows with ansible over ssh?
问题描述
我正在尝试使用 Ansible 和 ssh 与 Windows 机器进行交互
I'm trying to use Ansible with ssh for interact with Windows machines
我已经在 Windows 机器上成功安装了 OpenSSH,这意味着我可以从 Linux 连接到 Windows:
i have successfully install OpenSSH on a Windows machine that mean i can connect from linux to windows with:
ssh username@ipAdresse
我已经尝试使用很多版本的 ansible(2.6、2.7.12、2.7.14、2.8.5 和 2.8.6)并且我总是测试我是否可以用这条线 ping 其他 Linux 机器(它工作):
i've tried using a lot of version of ansible (2.6, 2.7.12, 2.7.14, 2.8.5 and 2.8.6) and i always test if i can ping an other Linux machine with this line(it work):
ansible linux -m ping
这是我的主机文件
[windows]
192.***.***.***
[linux]
192.***.***.***
[all:vars]
ansible_connection=ssh
ansible_user=root
[windows:vars]
ansible_ssh_pass=*******
remote_tmp=C:\Users\root\AppData\Local\Temp\
become_method=runas
verbose 有错误:
there is the error with verbose:
[root@oel76-template ~]# ansible windows -m win_ping -vvv
ansible 2.8.6
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Aug 7 2019, 08:19:52) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39.0.1)]
Using /etc/ansible/ansible.cfg as config file
host_list declined parsing /etc/ansible/hosts as it did not pass it's verify_file() method
script declined parsing /etc/ansible/hosts as it did not pass it's verify_file() method
auto declined parsing /etc/ansible/hosts as it did not pass it's verify_file() method
Parsed /etc/ansible/hosts inventory source with ini plugin
META: ran handlers
<192.***.***.***> ESTABLISH SSH CONNECTION FOR USER: root
<192.***.***.***> SSH: EXEC sshpass -d8 ssh -C -o ControlMaster=auto -o ControlPersist=60s -o 'User="root"' -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/91df1ca379 192.168.46.99 '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo C:/Users/root/AppData/Local/Temp/ansible-tmp-1571839448.66-279092717123794 `" && echo ansible-tmp-1571839448.66-279092717123794="` echo C:/Users/root/AppData/Local/Temp/ansible-tmp-1571839448.66-279092717123794 `" ) && sleep 0'"'"''
<192.***.***.***> (1, '', 'The system cannot find the path specified.\r\n')
<192.***.***.***> Failed to connect to the host via ssh: The system cannot find the path specified.
192.***.***.*** | UNREACHABLE! => {
"changed": false,
"msg": "Authentication or permission failure. In some cases, you may have been able to authenticate and did not have permissions on the target directory. Consider changing the remote tmp path in ansible.cfg to a path rooted in \"/tmp\". Failed command was: ( umask 77 && mkdir -p \"` echo C:/Users/root/AppData/Local/Temp/ansible-tmp-1571839448.66-279092717123794 `\" && echo ansible-tmp-1571839448.66-279092717123794=\"` echo C:/Users/root/AppData/Local/Temp/ansible-tmp-1571839448.66-279092717123794 `\" ), exited with result 1",
"unreachable": true
}
我不知道自己做错了什么,我也尝试更改 ansible.cfg 中的 remote_tmp,但仅此而已.
I don't know what i'm doing wrong, i also try to change the remote_tmp in ansible.cfg but nothing more.
remote_tmp=C:/Users/root/AppData/Local/Temp 的实际值
Actual value for remote_tmp=C:/Users/root/AppData/Local/Temp
有什么想法吗?
推荐答案
好的解决了,问题是
ansible_ssh_pass=*****
正确的语法是
ansible_password=*****
这篇关于如何修复“无法访问"当通过 ssh 使用 ansible ping windows 时?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!