Use ProxyCommand para todas as conexões SSH

4

Eu estava brincando com a ideia de ter um Servidor Proxy SSH ou de outro modo chamado Host de Jump, que eu usaria para conectar-me a todos os meus servidores "ocultos" . Então basicamente eu tenho a seguinte configuração. Por favor, note que eu intencionalmente uso endereços IP aqui em vez de hostname.

<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 devem apenas executar o seguinte comando

# ssh [email protected]

Para que isso funcione, criei o seguinte .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 é meio tedioso se eu tivesse mais redes para trabalhar com o meu proxy_ssh server. Então, tentei adicionar a ProxyCommand à seção Host * que não funcionou.

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

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

Isso causou o impacto de não conseguir mais me conectar ao host final. A conexão simplesmente expirou!

Portanto, a minha pergunta é se existe alguma maneira de ter isso mais transparente de tal forma que toda a minha conexão SSH usaria o proxy_ssh host?

    
por latz 30.01.2017 / 13:18

2 respostas

3

O exemplo acima fará com que seja recursivo, que cada conexão use um comando proxy, que é novamente ssh com outro comando de proxy. Boa maneira de fazer o seu proxy no DOS.

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

ProxyCommand ssh -oProxyCommand=none my_user@proxy_ssh.example.com netcat -w 120 %h %p
    
por 30.01.2017 / 14:43
0

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

Host proxy_ssh.example.com
  ProxyCommand none

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

    
por 03.02.2017 / 19:52