Estou tentando fazer o SSH do meu dispositivo doméstico para finalizar o host via jump host usando a opção ProxyJump do OpenSSH.
Acontece que o host de salto tem dois endereços IP vinculados à sua única interface: x.x.x.x
e y.y.y.y
. Existe um firewall com uma lista de permissões de IPs que têm permissão de acesso ssh ao host final. y.y.y.y
está na lista, mas x.x.x.x
não está.
O problema é que o padrão no host de salto é usar x.x.x.x
para SSH de saída.
Se eu ssh manualmente do host de salto para o host final, posso substituir o padrão pela -b
opção do OpenSSH, como ssh -b y.y.y.y endhost
. Isso funciona bem.
No entanto, ao tentar ir diretamente do meu dispositivo pessoal para o host final usando jumphost como intermediário, não consigo fazer funcionar. Eu tentei algumas variações na especificação do endereço de ligação, ~/.ssh/config
mas sem sorte.
Existe uma maneira de instruir o host de salto a usar um endereço de ligação específico?
Responder1
O problema na minha configuração foi que o gateway padrão dohost de saltofoi configurado para usar um IP diferente ( x.x.x.x
no seu exemplo) daquele que eu queria sshd
usar para o tráfego de saída ( y.y.y.y
no seu exemplo).
Então, um método que funcionou para mim foi definir uma rota específica nohost de saltopara ohost final'trago.
Nohost de salto(o meu está executando o Ubuntu 20.04):
route add -host <endhost's IP>/32 gw y.y.y.1 dev <y.y.y.y's Iface>
Onde <endhost's IP>
está o IPv4 n.n.n.n
e <y.y.y.y's Iface>
a interface y.y.y.y
associada, como eth0
.
Referências:
Observe que eu estava trabalhando especificamente para conseguir sshd
rotear o IP flutuante da DigitalOcean. Nesse caso, y.y.y.y
precisa ser descoberto usando:
curl -s http://169.254.169.254/metadata/v1/interfaces/public/0/anchor_ipv4/address
Então, se esse comando retornar 10.10.0.7
, então y.y.y.y
é 10.10.0.7
.
Referências: