web-dev-qa-db-fra.com

Plusieurs entrées similaires dans ssh config

Supposons que je souhaite configurer mes options ssh pour 30 serveurs avec la même configuration dans mon .sshconfig fichier:

Host XXX
     HostName XXX.YYY.com
     User my_username
     Compression yes
     Ciphers arcfour,blowfish-cbc
     Protocol 2
     ControlMaster auto
     ControlPath ~/.ssh/%r@%h:%p
     IdentityFile ~/.ssh/YYY/id_rsa

où la seule chose qui change entre ces 30 machines est XXX.

Au lieu de répéter la structure ci-dessus 30 fois dans mon fichier config, existe-t-il une autre façon de définir une gamme de machines?

208

Depuis la page de manuel ssh_config(5):

 Host    Restricts the following declarations (up to the next Host key‐
         Word) to be only for those hosts that match one of the patterns
         given after the keyword.  If more than one pattern is provided,
         they should be separated by whitespace.

...

 HostName
         Specifies the real Host name to log into.  This can be used to
         specify nicknames or abbreviations for hosts.  If the hostname
         contains the character sequence ‘%h’, then this will be replaced
         with the Host name specified on the commandline (this is useful
         for manipulating unqualified names).

Donc:

Host XXX1 XXX2 XXX3
  HostName %h.YYY.com
254

Pour minimiser la configuration, vous pouvez avoir un .ssh/config comme celui-ci

Host X01
    HostName X01.YYY.com

Host X02
    HostName X02.YYY.com

...

Host X01 X02 ...
     User my_username
     Compression yes
     Ciphers arcfour,blowfish-cbc
     Protocol 2
     ControlMaster auto
     ControlPath ~/.ssh/%r@%h:%p
     IdentityFile ~/.ssh/YYY/id_rsa

Host X01 X02 ... pourrait être remplacé par Host * si chaque hôte a la configuration suivante

88
Guillaume Vincent

Utilisez simplement *

Voir man ssh_config:

MOTIFS Un motif se compose de zéro ou plusieurs caractères non blancs, "*" (un caractère générique qui correspond à zéro ou plusieurs caractères) ou "?" (Un caractère générique qui correspond exactement à un caractère). Par exemple, pour spécifier un ensemble de déclarations pour tout hôte dans l'ensemble de domaines ".co.uk", le modèle suivant peut être utilisé:

       Host *.co.uk

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

       Host 192.168.0.?

 A pattern-list is a comma-separated list of patterns.  Patterns within pattern-lists may be negated by preceding them with an
 exclamation mark (‘!’).  For example, to allow a key to be used from anywhere within an organisation except from the “dialup”
 pool, the following entry (in authorized_keys) could be used:

       from="!*.dialup.example.com,*.example.com"
56
H.-Dirk Schmitt

D'après les réponses d'Ignacio Vazquez-Abrams et H.-Dirk Schmitt, on peut ajouter ce qui suit à .ssh/config

Host XXX*
    HostName %h.YYY.com
    User myname

puis, par exemple, vous pouvez vous connecter en tant que [email protected] en

ssh XXX2
12
Vito Chou

cela fonctionne pour moi:

 CanonicalizeHostname oui 
 CanonicalDomains xxx.auckland.ac.nz yyy.auckland.ac.nz 
 
 Hôte * .xxx.auckland.ac.nz 
 utilisateur myuser 
 Hôte * .yyy.auckland.ac.nz 
 utilisateur myuser 

cela permet d'utiliser des noms dans le domaine et de changer le nom d'utilisateur:

 bluebottle: ~ user_one $ ssh itslogprd05 
 [email protected] mot de passe: 
8
Russell Fulton

La façon suivante fonctionne.

Host 10.10.* 10.11.*
     User vagrant
0
edib