如何使用ansible打开SSH隧道?



大多数问题都是关于如何通过跳图使用ansible。那不是这个问题。

这个问题是:我如何使用Ansible打开ssh隧道?

我正在尝试从远程主机上的ansible运行以下命令,以便远程主机通过跳包打开到另一个服务器的SSH隧道。

tasks:
- name: Open SSH Tunnel
ansible.builtin.shell: 
cmd: 'ssh -L *:3376:localhost:3306 -fN -o "ProxyJump MyJumpHost" -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /home/{{ inventory_hostname }}/.ssh/myPem.pem myUser@remoteHost'
executable: /bin/bash
register: tunnel_result

这是一个相当复杂的操作,所以我的猜测是,我没有根据需要在各种服务器上配置所有内容。现在,当我运行这个,操作超时时,试图连接到"MyJumpHost"

有谁能提供一些必要的建议来完成这个工作吗?

更糟糕的情况是,你总是可以使用带有引号过滤器的raw模块。

- raw: "ssh -L *:3376:localhost:3306 -fN -o "ProxyJump MyJumpHost" -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /home/{{ inventory_hostname }}/.ssh/myPem.pem myUser@remoteHost"
args:
executable: /bin/bash

这应该像在命令行上一样工作。但是,请记住向主机添加SSH密钥以允许无密码登录。它还可能导致超时。对于没有直接连接的主机之间的RSYNC,我学到了这一点。

最新更新