There is a very similar question to what I'm asking at SSH from A through B to C, using private key on B
That question does have a solution that works for me, which is
ssh -t B ssh C
However I've failed to convert this to something usable by Ansible. When I try it complains about invalid syntax. This is what I tried
ansible_ssh_common_args='-t -i ~/.ssh/mykey admin@B ssh' Which gives me "syntax error near unexpected token". I could persist with this, but I get the impression that Ansible might have some more serious issues with hijacking the SSH command like this.
I've also asked a similar question on StackOverflow with https://stackoverflow.com/q/73975618/1196369 - but without success.
I have managed to get the connection working using the -J B (ProxyJump) or ProxyCommand options, however both of these seem to skip the SSH configuration on B. I've added configuration to ~/.ssh/config on B so that it will use a reverse tunnel when connecting to C. Using ssh -t B ssh C picks up this config and the reverse tunnel is created, but using ProxyJump or ProxyCommand does not create the reverse tunnel.
If the reverse tunnel is not created then C cannot access the internet, and this is required for the Ansible playbook I'd like to run.
I can combine -R for the reverse tunnel in the original command, and that works... but it means the tunnel is created from C -> A -> B and not C -> B as I would like. This looks something like:
ansible_ssh_common_args='-J admin@B' ansible_ssh_extra_args='-R 3129:B:3128' So my main question is how can I use ProxyJump (-J) in combination with RemoteForward (-R) on Ansible where the reverse tunnel is created from the proxy server, and not the host?
-Rto ssh to C)