使用 B 上的 SSH 配置从 A -> B -> C 进行 Ansible SSH

使用 B 上的 SSH 配置从 A -> B -> C 进行 Ansible SSH

有一个问题与我问的非常相似使用 B 上的私钥通过 SSH 从 A 经过 B 到达 C

这个问题确实有一个适合我的解决方案,那就是

ssh -t B ssh C

但是我没能将其转换为 Ansible 可以使用的内容。当我尝试时,它会抱怨语法无效。这是我尝试的

ansible_ssh_common_args='-t -i ~/.ssh/mykey admin@B ssh'

这给了我“意外令牌附近的语法错误”。我可以坚持下去,但我感觉 Ansible 在劫持此类 SSH 命令时可能会出现一些更严重的问题。

我也在 StackOverflow 上问过类似的问题https://stackoverflow.com/q/73975618/1196369- 但没有成功。

我已设法使用-J B(ProxyJump)或ProxyCommand选项使连接正常工作,但是这两个选项似乎都跳过了 B 上的 SSH 配置。我已在~/.ssh/configB 上添加了配置,以便它在连接到 C 时使用反向隧道。使用ssh -t B ssh C获取此配置并创建反向隧道,但使用 ProxyJump 或 ProxyCommand 不会创建反向隧道。

如果未创建反向隧道,则 C 将无法访问互联网,而这是我想要运行的 Ansible 剧本所必需的。

我可以-R在原始命令中组合反向隧道,这有效……但这意味着隧道不是C -> A -> BC -> B想要的。这看起来像:

ansible_ssh_common_args='-J admin@B'
ansible_ssh_extra_args='-R 3129:B:3128'

所以我的主要问题是如何在 Ansible 上将ProxyJump(-J) 与 (-R) 结合使用RemoteForward,其中从代理服务器创建反向隧道,并且不是主人?

相关内容