SSH-Konfigurationsplatzhalter auf erweitertem Hostnamen

25

Ich möchte in meiner SSH-Konfiguration einen Platzhalter haben, um meinen Standardbenutzernamen für alle Hosts in einer bestimmten Domäne auf einen bestimmten Wert zu setzen. Ich möchte aber auch einige Kurznamen für bestimmte Hosts haben. Ich habe erwartet, dass so etwas funktioniert:

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

Wenn ich mit diesen Einstellungen schreibe, ssh host1.mydomain.comwird ausgewertet [email protected], aber wenn ich tippe ssh host1, wird meine Benutzereinstellung nicht angewendet und stattdessen wird angezeigt [email protected].

Gibt es eine Möglichkeit, die Platzhalter auf dem endgültigen erweiterten Hostnamen abzustimmen, damit ich die kurze oder lange Form eingeben und die gleichen Ergebnisse erhalten kann?

Mu Mind
quelle
Was ist, wenn Sie die Reihenfolge ändern und den Platzhalterbereich an zweiter Stelle setzen?
Esmit
Hast du es versucht? Ich bin mir ziemlich sicher, dass Sie nur den richtigen Benutzernamen mit der falschen Domain bekommen, wenn überhaupt.
Mu Mind
Ich habe es nicht ausprobiert, deshalb habe ich es zu einer Kommentarantwort gemacht, um es zu versuchen, anstatt zu einer abstimmbaren Antwort.
Esmit

Antworten:

13

Einfach benutzen:

Host *.mydomain.com host1
User myusername

Host host1
Hostname host1.mydomain.com
  • Alternative Muster werden durch ein Trennzeichen in einer Host- Zeile angegeben.
  • Alle übereinstimmenden Host-Muster werden angewendet.
  • Wenn eine Option mehrmals auftritt, wird nur das 1. Vorkommen verwendet

quelle
3
Das erspart zumindest ein bisschen Tipparbeit. Klingt, als wüssten Sie nicht, wie Sie vermeiden können, dass die Domain-Informationen dupliziert werden?
Mu Mind
Es wäre großartig, wenn SSH nur versuchen könnte, die Standarddomäne "lan" oder "mycompany.com" hinzuzufügen, anstatt sie in der Konfigurationsdatei fest zu codieren.
Saustrup
18

Sie können einfach festlegen CanonicalizeHostname, yesdass ssh_config mit dem kanonischen Hostnamen Ihres Alias ​​ersetzt wird. Beispielsweise:

CanonicalizeHostname yes
Host *.mydomain.com
    User myusername

Host host1
    HostName host1.mydomain.com

Wenn Sie auch Hostnamen neu zuordnen möchten, können Sie Matchstattdessen Hostnur die kanonischen Hostnamen verwenden. Zum Beispiel in:

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

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

Die Benutzeranweisung wird nicht festgelegt, wenn Sie eine Verbindung herstellen host2.mydomain.com.

Time Square
quelle
Beachten Sie, dass es immer noch alte Versionen von ssh gibt, die diese Optionen nicht unterstützen. Wenn Sie wie ich auf eine dieser Versionen stoßen, funktioniert die Host-Lösung weiterhin.
Kyrstellaine
2

Die Verwendung von CanonicalDomains wird ebenfalls funktionieren.

CanonicalizeHostname yes
CanonicalDomains mydomain.com

Host *
User myusername

Wenn Sie einen Kurznamen für einen bestimmten Host haben möchten, zum Beispiel:

Host h
Hostname host1

Einen so kurzen Namen würde ich allerdings nicht empfehlen.

Jacob
quelle
1

Sie können% h.meinedomain.com in Ihrer .ssh / config verwenden.


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

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

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

Jetzt können Sie Folgendes tun:

ssh host1
anstatt
ssh host1.mydomain.com
ssh host10
anstatt
ssh host10.mydomain.com
und ssh host100

Grüße, Bert

Bert de Ridder
quelle