Expression régulière dans .ssh / config

12

Au travail, je dois souvent me connecter à des hôtes qui suivent un schéma de nommage commun, par exemple qc01- qc12, hc01- hc10, etc. Tous ces éléments doivent obtenir les mêmes valeurs de configuration dans mon ordinateur portable .ssh/config. Bien sûr, je pourrais utiliser des entrées pour les hôtes qc*et hc*, mais je me demande si à la place il est possible d'utiliser des expressions régulières?

andreas-h
la source

Réponses:

4

Veuillez consulter la PATTERNSsection man ssh_config.

La réponse longue est: non, vous ne pouvez pas, à moins que vous ne corrigiez votre sshpour le supporter.

gelraen
la source
Je ne trouve pas cette section dans mon man ssh_config.
Patryk
1
essayez linux.die.net/man/5/ssh_config
gelraen
Quelle version est apparue?
vonbrand
3

Vous pouvez utiliser des expressions régulières complètes dans votre ssh_config.

La documentation pertinente est IMO très difficile à lire et à comprendre. Je ne le comprends que parce que j'ai plus de 13 ans d'expérience Linux et plus de 8 ans d'utilisation ssh. Voici donc mon résumé de la documentation:

  • man ssh_config décrit une fonctionnalité appelée Match
  • puis il y a une fonctionnalité appelée execqui vous permet d'utiliser une commande shell arbitraire pour déterminer une correspondance
  • passer des paramètres d'entrée à la commande shell arbitraire est possible et décrit dans la section intitulée TOKENS

Dans mon cas, j'ai fini par utiliser dans mon~/.ssh/config :

Match exec "echo %h | grep -q 'NAME[0-9]\+$'"
    User USER
    IdentityFile /path/to/identity/file
    Hostname %h.fully.qualified.domain.name

Les tests doivent être effectués avec quelque chose de délicat comme celui-ci. Et pour faire ce test, vous appelez ssh -vvv HOSTNAME. Ce qui montrera exactement ce qui se passe et si votre nouveau Matchlogiciel est correctement implémenté.

Trevor Boyd Smith
la source
0

Extension de la réponse de Trevor:

Des hôtes plus complexes sont également possibles, comme la correspondance foo123.123et foo10.10dans une règle SANS avoir d'entrées DNS pour les noms d'hôtes utilisés:

Match exec "echo %h | grep -q 'foo[0-9]\+.[0-9]\+$'"
    Port 1234 # just to show it can be paired with non-default ports too,
              # see %p in man ssh_config
    ProxyCommand /usr/bin/nc 10.10.$(echo %h | sed -e 's/foo//') %p

Utilisation de ProxyCommand pour manipuler le contenu de% h avec le shell et connexion au port droit via un netcat. De cette façon, vous pouvez créer des préréglages pour la catégorie d'hôtes, sans créer d'entrées individuelles.

lutin
la source