Como adiciono várias máquinas com a mesma configuração em ~ / .ssh / config?

7

digamos, meu ~/.ssh/config tem alguma linha:

Host machine1
      User user
      HostName machine1
      ProxyCommand  ssh server nc %h %p 2> /dev/null

e isso funciona corretamente, mas o problema é que eu tenho muito machines : machine1, machine2, machine3, ... então como eu posso definir todos eles sem copiar manualmente o mesmo tipo de linhas

    
por K.Wanter 02.01.2018 / 15:13

3 respostas

12

Você pode fazer isso desta maneira:

Host machine1 machine2 machine3
      User user
      ProxyCommand ssh server nc %h %p 2>/dev/null

Você só precisa listar os hosts na linha Host , separados por espaço em branco, e pode omitir HostName se não for diferente do nome que você deu na linha Host . Consulte Várias entradas semelhantes em ssh config · U & L .

Para simplificar ainda mais, existem os curingas * e ? disponíveis com o seu significado habitual, por isso, Host machine? seria igualmente possível para o seu exemplo.

    
O
por dessert 02.01.2018 / 15:27
7

Se seus nomes de host se encaixam em um padrão, você pode usar os padrões do SSH:

Você pode usar padrões em ~/.ssh/config . De man ssh_config :

PATTERNS
     A pattern consists of zero or more non-whitespace characters, ‘*’ (a
     wildcard that matches zero or more characters), or ‘?’ (a wildcard that
     matches exactly one character).  For example, to specify a set of
     declarations for any host in the “.co.uk” set of domains, the following
     pattern could be used:

           Host *.co.uk

     The following pattern would match any host in the 192.168.0.[0-9] network
     range:

           Host 192.168.0.?

Então, se você quiser fazer proxy de tudo em *.example.com , então no seu ~/.ssh/config , coloque:

Host *.example.com
    User user
    ProxyCommand ssh server nc %h %p 2> /dev/null

Ou, usando as próprias opções do ssh , você pode evitar o netcat:

Host *.example.com
    User user
    ProxyCommand ssh -qW %h:%p server

Em man ssh :

-W host:port
     Requests that standard input and output on the client be
     forwarded to host on port over the secure channel.  Implies -N,
     -T, ExitOnForwardFailure and ClearAllForwardings.
    
por muru 02.01.2018 / 15:32
-1
Host machine*
      User user
      ProxyCommand  ssh server nc %h %p 2> /dev/null

sim, o nome do host é redundante.

    
por K.Wanter 02.01.2018 / 15:43