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é myusername@host1.mydomain.com, mais si je tape, ssh host1il n'applique pas mon paramètre utilisateur et je vois à la place mylocalusername@host1.mydomain.com.

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?


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

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.


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.


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.