Use ProxyCommand para todas as conexões SSH

Use ProxyCommand para todas as conexões SSH

Eu estava brincando com a ideia de ter um servidor proxy SSH ou chamado Jump Host, que eu usaria para conectar todos os meus"escondido"Servidores. Então basicamente eu tenho a seguinte configuração. Observe que uso intencionalmente endereços IP aqui em vez do nome do host.

<client> ---> <proxy_ssh> ---> <192.168.0.*>

Minha intenção é que seja o mais transparente possível para os usuários. Então, idealmente, os usuários deveriam apenas executar o seguinte comando

# ssh [email protected]

Para fazer isso funcionar, criei o seguinte arquivo .ssh/config.

Host *                                                                                                                                                                           
    ServerAliveInterval 240                                                                                                                                                      
    Compression yes                                                                                                                                                              
    ForwardAgent yes                                                                                                                                                             
    ForwardX11 yes                                                                                                                                                               

Host 192.168.0.*                                                                                                                                                                   
    ProxyCommand ssh my_user@proxy_ssh.example.com netcat -w 120 %h %p

Isso funciona bem. Mas seria um pouco tedioso se eu tivesse mais redes para trabalhar atrás do meu proxy_sshservidor. Então tentei simplesmente adicionar ProxyCommandà Host *seção que não funcionou.

Eu queria tornar isso mais transparente para o usuário final e alterei a configuração do ssh para o seguinte, simplesmente deixando de fora a definição específica do Host.

Host *
    ServerAliveInterval 240                                                                                                                                                      
    Compression yes                                                                                                                                                              
    ForwardAgent yes                                                                                                                                                             
    ForwardX11 yes                                                                                                                                                               
    ProxyCommand ssh my_user@proxy_ssh.example.com netcat -w 120 %h %p

Isso teve o impacto de que não consegui mais me conectar ao host final. A conexão simplesmente expirou!

Então, daí a minha pergunta: existe alguma maneira de tornar isso mais transparente de tal forma que toda a minha conexão SSH use o proxy_sshhost?

Responder1

O exemplo acima tornará recursivo, que cada conexão usará um comando proxy, que é novamente ssh com outro comando proxy. Boa maneira de usar o DOS em seu proxy.

Você deve excluir o proxy da lista, usar -F /dev/nullpara ignorar a configuração do comando proxy ou simplesmente ignorar o comando proxy para o proxy ssh:

ProxyCommand ssh -oProxyCommand=none my_user@proxy_ssh.example.com netcat -w 120 %h %p

Responder2

Adicione uma entrada à configuração do host de salto que substitua o comando proxy:

Host proxy_ssh.example.com
  ProxyCommand none

Caso contrário, ele tentará usar o comando proxy para chegar ao próprio host de salto.

informação relacionada