SSH config wildcard na rozszerzonej nazwie hosta

18

Chcę mieć symbol wieloznaczny w mojej konfiguracji SSH, aby ustawić domyślną nazwę użytkownika na określoną wartość dla wszystkich hostów w określonej domenie. Ale chcę też mieć kilka krótkich nazw dla niektórych hostów. Spodziewałem się czegoś takiego:

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

Z tymi ustawieniami, jeśli piszę ssh host1.mydomain.com to ocenia [email protected], ale jeśli piszę ssh host1 nie stosuje mojego ustawienia użytkownika, a zamiast tego widzę [email protected].

Czy istnieje sposób dopasowania symboli wieloznacznych do końcowej rozszerzonej nazwy hosta, aby móc wpisać krótki lub długi formularz i uzyskać takie same wyniki?

Mu Mind
źródło
Co zrobić, jeśli zmienisz kolejność, umieszczając sekcję z symbolami wieloznacznymi na drugim miejscu.
esmit
Próbowałeś tego? Jestem prawie pewny, że po prostu dostajesz poprawną nazwę użytkownika z domeną, jeśli w ogóle.
Mu Mind
Nie próbowałem tego, dlatego stworzyłem odpowiedź na komentarz jako coś do wypróbowania, zamiast odpowiedzi dającej się obniżyć.
esmit

Odpowiedzi:

10

Po prostu użyj:

Host *.mydomain.com host1
User myusername

Host host1
Hostname host1.mydomain.com
  • Alternatywne wzory są dostarczane przez ograniczające puste miejsce w a Gospodarz linia.
  • Wszystkie pasujące Wzorce hosta są stosowane.
  • Jeśli opcja występuje wielokrotnie, używane jest tylko pierwsze wystąpienie

źródło
3
Oszczędza to co najmniej trochę pisania. Wygląda na to, że nie wiesz, jak uniknąć duplikowania informacji o domenie?
Mu Mind
Byłoby wspaniale, gdyby SSH mógł po prostu spróbować dodać domyślną domenę, tj. „Lan” lub „mycompany.com”, zamiast konieczności kodowania go w pliku konfiguracyjnym.
Saustrup
12

Możesz po prostu ustawić CanonicalizeHostname do yes aby zmienić ssh_config z kanoniczną nazwą hosta twojego aliasu. Na przykład:

CanonicalizeHostname yes
Host *.mydomain.com
    User myusername

Host host1
    HostName host1.mydomain.com

Alternatywnie, jeśli chcesz również zmienić mapowanie nazw hostów, możesz użyć Match zamiast Host dopasować tylko kanoniczne nazwy hostów. Na przykład w:

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

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

Dyrektywa użytkownika nie zostanie ustawiona po połączeniu host2.mydomain.com.

Timesquare
źródło
Zauważ, że wciąż istnieją stare wersje ssh, które nie obsługują tych opcji - jeśli natkniesz się na jedną z nich, tak jak ja, rozwiązanie Host nadal będzie działać.
Kyrstellaine
1

Korzystanie z CanonicalDomains również będzie działać.

CanonicalizeHostname yes
CanonicalDomains mydomain.com

Host *
User myusername

Jeśli chcesz mieć krótką nazwę dla konkretnego hosta, na przykład:

Host h
Hostname host1

Nie poleciłbym jednak nazwy tak krótkiej.

jacob
źródło