Como encadear comandos ssh em múltiplos saltos?

1

É possível encadear várias conexões ssh com cada conexão especificada como um host ssh?

Eu sei que é possível usar o -W flag ou nc para fazer um segundo salto para outro nome de host ou endereço IP (veja, por exemplo, ssh através de múltiplos hosts ). Eu não consegui fazer isso funcionar do jeito que eu quero por alguns motivos. Primeiro, para o segundo salto, quero usar um arquivo de chaves armazenado no host intermediário e não vejo uma maneira de especificar isso com -W ou nc . Em segundo lugar, o destino final tem um endereço IP variável. Para lidar com isso, tenho um script em execução no destino que grava seu endereço IP em um arquivo armazenado no host intermediário e, em seguida, um script ( look_up_ip.sh ) no host intermediário que imprime esse endereço IP. No host intermediário, eu tenho essa entrada em ~/.ssh/config :

Host destination
 HostName destination
 User dest_user
 IdentityFile ~/.ssh/destination
 PreferredAuthentications publickey
 ProxyCommand nc $(look_up_ip.sh %h) %p

que me permite conectar ao destino do intermediário com apenas ssh destination .

O que eu gostaria de fazer é colocar algo em ~/.ssh/config na primeira máquina para definir o host de destino (como, por exemplo, hopped_destination ) para que o ssh primeiro se conecte ao host intermediário e faça ssh destination a partir daí, posso fazer apenas ssh hopped_destination da primeira máquina e ter o intermediário ~/.ssh/config lidando com o arquivo de identidade e a pesquisa de ip para o destino. Parte da razão pela qual eu quero isso é que, em última instância, quero poder conectar-me ao destino com VNC usando vncviewer -via destination localhost:0 e quero que a conexão não seja acessível a outros usuários no host intermediário (como implícito em partes de a resposta aceita para esta pergunta: link ). Eu estava esperando que fosse possível colocar ssh em ProxyCommand na primeira máquina com algo como:

Host destination
 ProxyCommand ssh -t intermediate_user@intermediate_host ssh destination

mas não encontrei opções que permitam que algo assim funcione.

Também gostaria de receber sugestões sobre maneiras melhores de fazer isso (existe uma maneira de se livrar do nc ProxyCommand que estou usando agora?). Eu provavelmente poderia trabalhar um script para fazer o comando VNC mais diretamente, mas isso pode ser mais complicado (manipular o encaminhamento de porta diretamente e ter certeza de fechar as coisas na saída e ter certeza de não abrir uma porta para todos os usuários). p>     

por ws_e_c421 26.10.2016 / 23:32

1 resposta

0

exemplo do meu arquivo de configuração ssh;

Host vmike2-squid-cache
  User mike
  ProxyCommand ssh -q -A -x ???.???.???.??? -W %h:22

(a única coisa que eu mudei foi o ip)

    
por 27.10.2016 / 00:00