
Ich muss mich bei der Arbeit bei mehreren Servern anmelden, um meine Arbeit erledigen zu können. Ich habe es satt, den FQDN eines Servers einzugeben, auf den ich zugreifen möchte. Ich melde mich per SSH in unserem eigenen privaten Netzwerk an und ab. Ich bin mir zu 99 % sicher, dass es in unserem eigenen privaten Netzwerk ist, da alle Server die IP-Adresse 10.xyz haben. Gibt es eine Möglichkeit, sich per SSH mit Servern nur mit dem Hostnamen und nicht mit dem Domänennamen anzumelden?
Wir haben Server in mehreren Ländern. Die Namen unserer Server sind sehr lang. Sie lauten wie folgt:
hostname.country.domainname.com
Ich bekomme Karpaltunnelsyndrom beim Tippen
ssh [email protected]
... jedes Mal, wenn ich auf einen unserer Server zugreife. Wenn ich in den USA bin und versuche, auf einen anderen Host in den USA zuzugreifen, kann ich einfach tippen ssh me@hostname2
und die Verbindung funktioniert einwandfrei. Wenn ich jedoch in den USA bin und versuche, eine Verbindung zu einem Server in England herzustellen, kann ich nicht tippen und eine Verbindung herstellen .ssh [email protected]
hostname3
Als Workaround habe ich in meiner Datei ~/.ssh/config für einige der Server einen Alias eingerichtet. Ich glaube jedoch nicht, dass es machbar ist, mehr als 1000 Server in diese Datei aufzunehmen. Ich habe bereits mehr als 20 Server hinzugefügt und meine Kollegen halten mich für verrückt, obwohl ich glaube, dass sie verrückt sind, wenn sie beim SSH-Rumgehen den FQDN eingeben.
Gibt es für uns eine einfache Möglichkeit, etwas so einzurichten, dass wir unseren Domänennamen.com nicht jedes Mal eingeben müssen?
Antwort1
Sie können Platzhalter verwenden und %h
in Ihrer Konfiguration
z.B
Host *.eng
Hostname %h.domainname.com
Wenn Sie ssh foo.eng
dies jetzt tun, wird versucht, eine Verbindung herzustellen foo.eng.domainname.com
.
Sie können dieser Konfiguration auch andere Optionen hinzufügen, z. B. das Erzwingen des Benutzernamens
Host *.eng
Hostname %h.domainname.com
User me
Wenn Sie dies jetzt tun, wird versucht , als Benutzer ssh foo.eng
eine Verbindung herzustellen .foo.eng.domainname.com
me
% ssh foo.eng
ssh: Could not resolve hostname foo.eng.domainname.com: Name or service not known
(also, offensichtlich erhalte ich vorher eine Fehlermeldung, dass es für mich kein gültiger Hostname ist!)
Sie benötigen jetzt also nur noch eine Regel pro Land.
Antwort2
Sie können die CanonicalDomains
Option in Ihrer SSH-Konfiguration verwenden.
Wenn Sie Ihrer SSH-Konfigurationsdatei Folgendes hinzufügen, versucht SSH, eine Verbindung domainname.com
zu jedem Host herzustellen, dessen Name höchstens einen Punkt enthält:
CanonicalizeHostname yes
CanonicalDomains domainname.com
Mit dieser Konfiguration ssh foo.eng
wird zuerst versucht foo.eng.domainname.com
und auf zurückgegriffen foo.eng
, wenn der Host nicht gefunden werden kann. Ebenso ssh github.com
wird zuerst versucht github.com.domainname.com
, d. h. wenn Sie eine Verbindung zu GitHub herstellen möchten, sollte Ihr DNS-Server keine Einträge für nicht vorhandene Hosts zurückgeben.
Damit CanonicalizeMaxDots
lässt sich steuern, wie viele Punkte im Hostnamen vorkommen können, bevor SSH ihn als vollqualifiziert betrachtet und kein anhängt domainname.com
. Der Standardwert ist 1, was für Sie angesichts Ihres aktuellen Schemas ausreichend sein sollte. Wenn Sie jedoch jemals zu einem Wert wie diesem gelangen, hostname.city.country
müssen Sie den Wert erhöhen.
Antwort3
Wenn Sie hinzufügen
search domainname.com
an /etc/resolv.conf
und verwenden hostname.country
( ssh
und auch andere Netzwerkprogramme) fügen automatisch 1domainname.com
für Sie an .
Ich glaube nicht, dass es eine gute Idee ist, die verschiedenen Länderdomänen zu Ihrem search
Pfad hinzuzufügen, da es zu unerwartetem Verhalten kommen kann, wenn zwei Server in zwei verschiedenen Ländern denselben Hostnamen verwenden. 2
Ich glaube, dass diese Methode besser ist als eine Änderung der ssh
Konfiguration, da so hostname.country
eine Auflösung unabhängig vom verwendeten Programm ( telnet
, VNC usw.) möglich ist.
Sehenresolv.conf(5)
1 Genauer gesagt wird es angehängt, wenn es sich nicht selbst domainname.com
auflösen lässt .hostname.country
2 In einem solchen Szenario hostname
wird der Server in dem Land aufgelöst, dessen Domäne zuerst im search
Pfad aufgeführt ist.