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)
É 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>
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)
Tags ssh vnc ssh-tunneling