ssh config: alternativas para o ProxyCommand?

1

Com a ajuda de ProxyCommand , configurei alguns favoritos ssh para facilitar o uso:

host some_server
    hostname some_server
    port 22
    user some_user
    IdentityFile /home/user/.ssh/id_rsa
    ProxyCommand ssh frontserver1 -W %h:%p

host frontserver1
    hostname frontserver1.url.tld
    port 22
    user some_user
    IdentityFile /home/user/.ssh/id_rsa

Hoje, frontserver1 tem um longo tempo de inatividade, mas também consegui me conectar por meio de frontserver2 ou frontserver3 . No entanto, eu teria que configurar tudo novamente como some_server_via_front2 e assim por diante. Isso resultaria em entradas n para cada servidor de intranet (há muito) que desejo alcançar, onde n é o número de servidores frontais.

Existe uma maneira mais fácil?

Posso configurar alternativas para ProxyCommand ?

Algo como: se ProxyCommand ssh frontserver1 -W %h:%p não estiver acessível, vá para ProxyCommand ssh frontserver2 -W %h:%p e, em seguida, frontserver3 , ...

    
por daniel451 02.03.2018 / 20:16

1 resposta

1

Dado o que o manual diz:

 ProxyCommand
         Specifies the command to use to connect to the server.  The com-
         mand string extends to the end of the line, and is executed using
         the user's shell 'exec' directive to avoid a lingering shell
         process.

Você deve ser capaz de usar o operador OR lógico do shell, assim:

host some_server
    hostname some_server
    port 22
    user some_user
    IdentityFile /home/user/.ssh/id_rsa
    ProxyCommand ssh frontserver1 -W %h:%p || ssh frontserver2 -W %h:%p || ssh frontserver3 -W %h:%p

host frontserver1
    hostname frontserver1.url.tld
    port 22
    user some_user
    IdentityFile /home/user/.ssh/id_rsa
    ConnectTimeout 5

host frontserver2
    hostname frontserver1.url.tld
    port 22
    user some_user
    IdentityFile /home/user/.ssh/id_rsa
    ConnectTimeout 5

host frontserver3
    hostname frontserver1.url.tld
    port 22
    user some_user
    IdentityFile /home/user/.ssh/id_rsa
    ConnectTimeout 5

Eu tomei a liberdade de adicionar uma diretiva ConnectTimeout a cada um dos hosts de proxy para que levasse no máximo quinze segundos para finalmente falhar em todo o terceiro host da lista, em vez de n vezes o número de hosts vezes que a configuração de tempo limite TCP padrão em seu host acontece ser.

    
por 02.03.2018 / 21:17