O Ansible usa o OpenSSH como a implementação comunicativa da rede de fundo, mas ele oferece suporte ao login multi-hop?
Quero dizer, se o Ansible pode fazer login em um servidor diretamente, mas pode fazer login no server_a, então, no server_a, faça login no server_b para configurar o server_b?
Não sei como o Ansible usa o OpenSSH.
Mas o próprio OpenSSH suporta "logins multihop" .
Desde o OpenSSH 7.3, você pode usar o
-J
switch (pular) como:O
-J
é um equivalente deProxyJump
diretiva :Observe que com ferramentas de transferência de arquivos, como
scp
esftp
, a-J
opção é suportada apenas a partir da versão 8.0. Com versões mais antigas (mas pelo menos 7.3), useProxyJump
. Consulte Como posso baixar um arquivo de um host para o qual só posso fazer SSH por meio de outro host?Observe também que as versões se referem a versões locais do OpenSSH. Uma versão remota do OpenSSH não é relevante.
Como comentou @GordonDavisson, com versões mais antigas (mas pelo menos 5.4), você pode usar
ProxyCommand
diretiva e-W
switch :Com versões ainda mais antigas, você pode usar o
nc
comando em vez de-W
:Todas as opções acima são abordadas com mais detalhes no artigo do Wikilivros OpenSSH/Cookbook/Proxies e Jump Hosts .
Outra opção é usar o encaminhamento de porta (
-L
switch ). Mas isso envolve duasssh
instâncias. Não tenho certeza se isso é possível com o Ansible.Para versões mais antigas do Ansible, você tinha que fazer isso na configuração geral do SSH, conforme descrito na resposta de Martin Prikryls. Novas versões têm configuração específica do Ansible, conforme descrito no FAQ geral
Dessa forma, você tem uma maneira muito Ansible de configurar hosts bastiões SSH apenas quando necessário, juntamente com quaisquer outras configurações SSH especiais (como chaves, usuários etc.).