web-dev-qa-db-fra.com

Comment ajouter plusieurs machines avec la même configuration dans ~ / .ssh / config?

disons que mon ~/.ssh/config a une ligne:

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

et cela fonctionne correctement, mais le problème est que j'ai beaucoup de machines: machine1, machine2, machine3, ... alors comment puis-je les définir toutes sans copier manuellement le même type de lignes

7
K.Wanter

Vous pouvez le faire de cette façon:

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

Il vous suffit de répertorier les hôtes dans la ligne Host, séparés par des espaces, et vous pouvez omettre HostName si ce n'est pas différent du nom que vous avez donné dans la ligne Host. Voir Plusieurs entrées similaires dans ssh config · U & L .

Pour simplifier encore plus, il existe les caractères génériques * et ? disponibles avec leur signification habituelle, de sorte que Host machine? soit également possible pour votre exemple.

12
dessert

Si vos noms d'hôtes correspondent à un modèle, vous pouvez utiliser les modèles de SSH:

Vous pouvez utiliser des modèles dans _~/.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.?
_

Donc, si vous voulez utiliser un proxy complet dans _*.example.com_, alors dans votre _~/.ssh/config_, mettez:

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

Ou, en utilisant les options de ssh, vous pouvez éviter netcat:

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

De 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.
_
7
muru