Wie kann ich intern per SSH auf Server zugreifen, indem ich den Hostnamen verwende, ohne den Domänennamen?

Wie kann ich intern per SSH auf Server zugreifen, indem ich den Hostnamen verwende, ohne den Domänennamen?

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@hostname2und 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 %hin Ihrer Konfiguration

z.B

Host *.eng
  Hostname %h.domainname.com

Wenn Sie ssh foo.engdies 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.engeine Verbindung herzustellen .foo.eng.domainname.comme

% 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 CanonicalDomainsOption in Ihrer SSH-Konfiguration verwenden.

Wenn Sie Ihrer SSH-Konfigurationsdatei Folgendes hinzufügen, versucht SSH, eine Verbindung domainname.comzu jedem Host herzustellen, dessen Name höchstens einen Punkt enthält:

CanonicalizeHostname yes
CanonicalDomains domainname.com

Mit dieser Konfiguration ssh foo.engwird zuerst versucht foo.eng.domainname.comund auf zurückgegriffen foo.eng, wenn der Host nicht gefunden werden kann. Ebenso ssh github.comwird 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 CanonicalizeMaxDotslä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.countrymüssen Sie den Wert erhöhen.

Antwort3

Wenn Sie hinzufügen

search domainname.com

an /etc/resolv.confund verwenden hostname.country( sshund 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 searchPfad 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 sshKonfiguration, da so hostname.countryeine 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.comauflösen lässt .hostname.country

2 In einem solchen Szenario hostnamewird der Server in dem Land aufgelöst, dessen Domäne zuerst im searchPfad aufgeführt ist.

verwandte Informationen