如何使用 openSSH 和 Ansible 连接到 WIndows 节点?

How to connect to WIndows node using openSSH and Ansible?

我正在尝试使用 OpenSSH 和 Ansible 连接到我的 windows 计算机。
我可以使用常规 ssh 进行连接,但是当我尝试使用 Ansible 进行连接时,每次我更改某些内容时都会遇到几乎相同的错误。

我也尝试过 运行 Ansible 作为 root 但仍然没有

   fatal: [IVU]: 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 remote directory. Consider changing the remote temp path in ansible.cfg to a path rooted in \"/tmp\". Failed command was: ( umask 77 && mkdir -p \"` echo /tmp/ansible-tmp-1502794936.2073953-164132649383245 `\" && echo ansible-tmp-1502794936.2073953-164132649383245=\"` echo /tmp/ansible-tmp-1502794936.2073953-164132649383245 `\" ), exited with result 1", "unreachable": true}

我尝试将 ansible.cfg 中的 ssh_args 更改为 ssh_args= -o ControlMaster=no 并且没有对输出进行任何更改。

我试图将 ansible.cfg 中的可执行文件更改为 C:/Windows/System32/cmd.exe,但我遇到了同样的错误

我已经尝试更改 remote_dir=/tmp/ 但仍然没有。

我的 ansible 库存是:

[IVU]
IVU ansible_host=**IP**

[IVU:vars]
ansible_port=22
ansible_user=**user**
ansible_ssh_pass=**pass**
ansible_ssh_private_key_file=** Keyfile **

似乎它甚至在 运行 任何任务之前就失败了,但是从 windows 计算机上的 openssh 日志来看,当 ansible 连接到它和我 ssh 进入它时,我看不出有什么不同。

3724 09:27:38:720 error: Couldn't create pid file "C:\Program Files\OpenSSH\sshd.pid": Permission denied
3724 09:27:41:376 Accepted publickey for **User** from **IP** port 42700 ssh2: RSA SHA256:clNmiKxygl/TLEb5Ob4lZs6JqztoQyxOsjMoHQ2HYgo
3724 09:27:58:533 Received disconnect from **IP** port 42700:11: disconnected by user
3724 09:27:58:533 Disconnected from user **User** **IP** port 42700
3360 09:28:41:398 error: Couldn't create pid file "C:\Program Files\OpenSSH\sshd.pid": Permission denied
3360 09:28:41:616 Accepted publickey for **User** from **IP** port 42704 ssh2: RSA SHA256:clNmiKxygl/TLEb5Ob4lZs6JqztoQyxOsjMoHQ2HYgo
3360 09:28:41:741 Received disconnect from **IP** port 42704:11: disconnected by user
3360 09:28:41:741 Disconnected from user **User** **IP** port 42704

9:27 是当我使用 ssh 连接时,9:28 是当 ansible 连接时。

为了让 Ansible 在 windows 上与 openSSH 一起工作,我是否缺少需要更改的内容?

我找到了使用反向 ssh 隧道的解决方案。

我放弃了尝试将 ssh ansible 模块与 windows 一起使用的想法,因为 Windows 不能很好地使用它,除非你有 windows 10 更新。我决定改用 winrm ansible 模块。

我所做的是通过使用以下命令打开反向 SSH 隧道,将 windows 计算机连接到计算机 运行 Ansible:

ssh -p5983 -R 5982:localhost:5986 **my_user**@**my_ip**   

出于我的目的,我必须转发,因为我的计算机与 windows 计算机
位于不同的 vlan 上 然后在 Ansible 中我指定主机是 localhost 端口 5982。

这对于使用 openssh 和 windows 来说是一个很好的解决方案,至少在 Ansible 在 windows 上支持 openssh 之前是这样。