Hostnamen vor dem Aufruf von SSH zu FQDN erweitern?

Hostnamen vor dem Aufruf von SSH zu FQDN erweitern?

Ich verwende eine .ssh/config-Datei, um meinen Benutzernamen basierend auf einem bestimmten Teil einer Subdomäne entsprechend festzulegen, z. B.

Host *widgetshop.com*
   User foobar
   ControlMaster auto
   ControlPath ~/.ssh/socket-%r@%h:%p

Host *
   ControlMaster auto
   ControlPath ~/.ssh/socket-%r@%h:%p

Dies funktioniert, wenn ich schreibe:

ssh foo.widgetshop.com

aber es funktioniert nicht, wenn ich schreibe:

ssh foo

was bei der Suchpfadauflösung zum gleichen FQDN wird.

Kennt jemand eine Möglichkeit, Kurznamen vor dem Aufruf von SSH zu erweitern, oder einen alternativen Ansatz?

Antwort1

Vielleicht können Sie den Befehl verwenden host:

ssh $(host -t A  foo | cut -f1 -d" ")

Fügen Sie das in ein Shell-Skript ein (ersetzen Sie „foo“ durch „$1“) und führen Sie ssh aus.

Antwort2

Ab OpenSSH 6.5 können Sie dies mit der CanonicalizeHostnameOption in ssh_config tun. Hier ist ein Beispiel, das das gewünschte Ergebnis liefern sollte:

CanonicalizeHostname yes
CanonicalDomains widgetshop.com

Host *.widgetshop.com
     User foobar

Antwort3

Die Manpage ssh_config beantwortet dies:

Der Host ist das in der Befehlszeile angegebene Hostnamenargument (d. h. der Name wird vor dem Abgleich nicht in einen kanonisierten Hostnamen konvertiert).

Mit anderen Worten: Es funktioniert nicht, weil es so nicht funktioniert.

Antwort4

siehe bitte meinen „alternativen Ansatz“)

mbp:~ alexus$ grep f9 /etc/hosts
XX.XXX.XX.XXX   f9
mbp:~ alexus$ ssh f9 hostname
f9.XXX.org
mbp:~ alexus$ 

verwandte Informationen