
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 CanonicalizeHostname
Option 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$