Caractère générique de configuration SSH sur le nom d'hôte étendu

25

Je veux avoir un caractère générique dans ma configuration SSH pour définir mon nom d'utilisateur par défaut sur une valeur particulière pour tous les hôtes sur un certain domaine. Mais je veux aussi avoir des noms courts pour certains hôtes particuliers. Je m'attendais à ce que quelque chose comme ça fonctionne:

Host *.mydomain.com
    User myusername
Host host1
    Hostname host1.mydomain.com

Avec ces paramètres, si je tape, ssh host1.mydomain.comil est évalué [email protected], mais si je tape, ssh host1il n'applique pas mon paramètre utilisateur et je vois à la place [email protected].

Existe-t-il un moyen de faire correspondre les caractères génériques sur le nom d'hôte étendu final afin que je puisse taper le formulaire court ou long et obtenir les mêmes résultats?

Mu Mind
la source
Que se passe-t-il si vous changez l'ordre, en mettant la section générique en second.
esmit
L'as tu essayé? Je suis presque sûr que vous obtenez le bon nom d'utilisateur avec le mauvais domaine, le cas échéant.
Mu Mind
Je ne l'ai pas essayé, c'est pourquoi j'en ai fait une réponse de commentaire comme quelque chose à essayer, au lieu d'une réponse downvotable.
esmit

Réponses:

13

Utilisez simplement:

Host *.mydomain.com host1
User myusername

Host host1
Hostname host1.mydomain.com
  • Des motifs alternatifs sont fournis par un espace de délimitation dans une ligne hôte .
  • Tous les modèles d'hôte correspondants sont appliqués.
  • Si une option se produit plusieurs fois, seule la 1ère occurrence est utilisée

la source
3
Cela économise au moins un peu de frappe. On dirait que vous n'êtes au courant d'aucun moyen d'éviter la duplication des informations de domaine?
Mu Mind
Ce serait formidable si SSH pouvait juste essayer d'ajouter le domaine par défaut, c'est-à-dire "lan" ou "mycompany.com", au lieu d'avoir à le coder en dur dans le fichier de configuration.
Saustrup
18

Vous pouvez simplement définir CanonicalizeHostnamepour yesanalyser ssh_config avec le nom d'hôte canonique de votre alias. Par exemple:

CanonicalizeHostname yes
Host *.mydomain.com
    User myusername

Host host1
    HostName host1.mydomain.com

Alternativement, si vous souhaitez également remapper les noms d'hôte, vous pouvez utiliser Matchau lieu de Hostpour correspondre uniquement aux noms d'hôte canoniques. Par exemple, dans:

Match canonical host="*.mydomain.com"
    User myusername

Host host2.mydomain.com
    HostName host2.otherdomain.com

La directive utilisateur ne sera pas définie lorsque vous vous connecterez à host2.mydomain.com.

Time Square
la source
Notez qu'il existe encore d'anciennes versions de ssh qui ne prennent pas en charge ces options - si vous en rencontrez une, comme je l'ai fait, la solution Host fonctionnera toujours.
Kyrstellaine
2

L'utilisation de CanonicalDomains fonctionnera également.

CanonicalizeHostname yes
CanonicalDomains mydomain.com

Host *
User myusername

Si vous souhaitez avoir un nom court pour un hôte particulier, par exemple:

Host h
Hostname host1

Cependant, je ne recommanderais pas un nom aussi court.

Jacob
la source
1

Vous pouvez utiliser% h.mydomain.com dans votre .ssh / config.


 Host host?
 User myusername
 Hostname %h.mydomain.com

Host host?? User myusername Hostname %h.mydomain.com

Host host??? User myusername Hostname %h.mydomain.com

Vous pouvez maintenant:

ssh host1
au lieu de
ssh host1.mydomain.com
ssh host10
au lieu de
ssh host10.mydomain.com
et ssh host100

Cordialement, Bert

Bert de Ridder
la source