Kann ich Ubuntu so konfigurieren, dass eine Domain an das Ende einer SSH-Hostnamenanforderung angehängt wird?


9

Ich habe viele Server und alle enden mit demselben servers.company.net, also zum Beispiel vded-xx-001.servers.company.net, und habe mich gefragt, ob es möglich ist, es so zu machen, dass ich einfach das vded- eingeben kann. xx-001 und muss es die servers.company.net automatisch anhängen?

Also würde ich gerne tippen

ssh user@vded-xx-001

und habe es tatsächlich verbunden mit

ssh user@vded-xx-001.servers.company.net

Ich habe versucht, meine DNS-Suchdomäne auf servers.company.net in / etc / network / interfaces festzulegen, aber dies hat nicht das gewünschte Ergebnis erzielt.

Kann mich jemand in die richtige Richtung weisen?

Danke im Voraus


Gibt es einen Grund, den Sie nicht einfach search company.netzu /etc/resolv.conf hinzufügen können?
Hennes

@Hennes Das Hinzufügen der Suche company.net und servers.company.net zu resolv.conf hat funktioniert. Oben in der Datei wird jedoch eine Warnung angezeigt, dass meine Änderungen überschrieben werden. Wenn dies der Fall ist, wie mache ich sie dauerhaft?
Tim Lassie Freeborn

1
Ich würde das gerne beantworten und die zusätzliche Wiederholung rechen
Hennes

Im Gegensatz zu dem, was in dieser Frage erläutert wird, ist es normalerweise am besten, eine Suchdomänenliste entweder in /etc/network/interfaces(unter Verwendung einer dns-searchOption) oder in das Feld NetworkManager-Verbindungskonfiguration aufzunehmen Search domains.
jdthood

Anstatt mit der lokalen Resolver-Konfiguration herumzuspielen, ist diese Lösung einfacher und portabler.
OrangeDog

Antworten:


19

Wahrscheinlich haben Sie das bereits gelöst, aber vielleicht könnte es später jemandem helfen: Sie müssen sich nicht mit Ihrer resolv.conf treffen, sondern können einfach so etwas in Ihrer ~ / .ssh / config verwenden:

Host vded-*-001 test-*-something-fixed-*
        HostName %h.servers.company.net
        User someusername

So können Sie später einfach verwenden:

ssh vdev-alotofstuff-001
ssh vdev-somethingels-001
ssh test-02-something-fixed-somethingelse

Grüße,


Dies sollte die akzeptierte Antwort sein.
Slm

Dies ist ein Weg, um das Problem zu lösen, löst jedoch nicht das Problem der systemweiten Namensauflösung, sondern löst nur das Problem für SSH-Hostnamen. Die beste Vorgehensweise für mich ist es, systemweit den richtigen Hostnamen zu erhalten und keinen bestimmten Dienst (ssh) anpassen zu müssen, um bestimmte Hostnamen auflösen zu können
Philippe Gachoud

1
Nur für den Fall, dass ich dies vergesse und später noch einmal nachschlage, wenn Sie sowohl kurze als auch lange Namen zulassen möchten, während Sie dieselbe Konfiguration verwenden, geben Sie einfach einen ersten Eintrag Host vded-*.servers.company.netmit an Hostname %h. Dann in einem 2. Eintrag Host vded-*mit Hostname %h.servers.company.netund allen anderen Parametern wie User, IdentityFile usw.
bksunday

6

Dies ist die einfachste Lösung. Es funktioniert für alle Hosts, erfordert weder Root noch Zugriff auf DNS / Resolver-Systeme.

Fügen Sie oben in Ihre ~/.ssh/configDatei ein (oder erstellen Sie, falls es noch nicht vorhanden ist):

CanonicalizeHostname yes
CanonicalDomains servers.company.net

Dokumentation ( man 5 ssh_config):

CanonicalizeHostname

Steuert, ob eine explizite Kanonisierung des Hostnamens durchgeführt wird. Standardmäßig wird keine Namensumschreibung durchgeführt, und der System-Resolver kann alle Hostnamensuchen durchführen. Wenn diese Option auf " Ja" gesetzt ist, versucht ssh für Verbindungen, die keinen ProxyCommand verwenden , den in der Befehlszeile angegebenen Hostnamen mithilfe der CanonicalDomains- Suffixe und der CanonicalizePermittedCNAMEs- Regeln zu kanonisieren . Wenn CanonicalizeHostname auf immer festgelegt ist , wird die Kanonisierung auch auf Proxy-Verbindungen angewendet.

Wenn diese Option aktiviert ist, werden die Konfigurationsdateien unter Verwendung des neuen Zielnamens erneut verarbeitet, um neue Konfigurationen in übereinstimmenden Host- und Match- Zeilengruppen abzurufen.


Es funktioniert am besten für mich. Sie müssen keine CanonicalDomains hinzufügen, sondern nur die 1. Zeile. Auf diese Weise funktioniert es auch, wenn Sie eine Verbindung zu anderen Netzwerken herstellen.
Adam Wallner

2
@AdamWallner Wenn Sie es nicht hinzufügen, funktioniert CanonicalDomainses nur in der Suchdomäne des aktuellen Netzwerks. Wenn Sie dies tun (und Sie können mehrere auflisten), funktioniert dies zum Auflösen all dieser Hostnamen in jedem Netzwerk, mit dem Sie möglicherweise eine Verbindung herstellen.
OrangeDog

2

Ja, Sie können dies tun, indem Sie eine Konfigurationsdatei mit dem Namen erstellen ~/.ssh/configund den folgenden Inhalt eingeben:

Host vded-xx-001
User user
Port 22
HostName vded-xx-001.servers.company.net

Jetzt müssen Sie nur noch Folgendes eingeben (Sie benötigen nicht einmal mehr den Benutzernamen):

$ ssh vded-xx-001

Dies funktioniert auch mit dem Befehlszeilenprogramm scp:

$ scp filename vded-xx-001:/path/

Ich bin mir bewusst, dass dies für einzelne Hosts funktioniert, aber ich habe Hunderte und hatte gehofft, ich könnte eine Regel erstellen, die VDED- * aufgreift, und dann für den Hostnamen host.servers.company.net
Tim Lassie Freeborn

1
@ TimLassieFreeborn: Sie können ein Skript schreiben, das die für die Konfigurationsdatei erforderlichen Einträge generiert. Ich weiß allerdings nicht, ob Sie es dynamisch machen können.
Flimm

@ TimLassieFreeborn siehe meine Antwort
OrangeDog

2

Die Lösung für mein Problem bestand darin, die Suchdomäne hinzuzufügen zu resolv.conf:

search servers.company.net

Dies hat mir erlaubt einzutreten

ssh user@vded-xx-001

für einen meiner Server und es wird eine Verbindung mit der richtigen Adresse hergestellt.

Danke @Hennes für die Antwort


2
Angenommen, Sie führen Ubuntu 12.04 oder höher aus, sollten Sie /etc/resolv.conf nicht direkt bearbeiten, da das Dienstprogramm resolvconf diese Datei generiert. (Tatsächlich wird /run/resolvconf/resolv.conf generiert, zu dem /etc/resolv.conf eine symbolische Verknüpfung ist.) Stattdessen sollten Sie die DNS-Einstellungen über den Schnittstellenkonfigurator konfigurieren, entweder ifup oder NetworkManager. Ifup : Bearbeiten Sie / etc / network / interfaces und fügen Sie der Zeilengruppe eine dns-search servers.company.netZeile für die externe Netzwerkschnittstelle des Computers hinzu. NM : Fügen Sie servers.company.netdem Search domainsFeld auf der Registerkarte IPv4 die Verbindung hinzu.
jdthood

Wenn auf Ihrem Computer /etc/resolv.confkeine symbolische Verknüpfung besteht, führen ../run/resolvconf/resolv.confSie diese aus sudo dpkg-reconfigure resolvconf, um die symbolische Verknüpfung wiederherzustellen.
jdthood

1

Wenn Sie SSH-Identitäten verwenden - und bei so vielen Servern lohnt es sich, einen Blick darauf zu werfen -, ermöglicht das Festlegen von CanonicaliseHostname und CanonicaliseDomains, wie OrangeDog sagte, auch eine Übereinstimmung mit einem @ cert-Authority-Eintrag in Ihren bekannten Hosts

bekannte_Hosts Eintrag @ cert-Behörde * .example.com ssh-rsa AAAddadfkjaeio ...

Ohne Canonicalise-Optionen müssten Sie "ssh host.example.com" verwenden.

Mit Canonicalise-Optionen wird "ssh myhost" übereinstimmen.

Ich hätte dies als Kommentar zur Antwort von OrangeDogs hinzugefügt, wenn der Vertreter dies erlaubt hätte ...


0

Für eine schnelle Lösung, die programmübergreifend funktioniert, können Sie die Domäne auch so einstellen vded-xx-001, dass sie zu einer bestimmten IP-Adresse umleitet, indem Sie /etc/hostseine Zeile wie die folgende einfügen:

173.194.41.90  vded-xx-001

Dies funktioniert in Ihrem Browser: http://vded-xx-001/

Sowie mit Kommandozeilenprogrammen wie SSH:

$ ssh user@vded-xx-001

(Ich persönlich bevorzuge jedoch die SSH-Konfigurationslösung .)


0

Für die systemweite Auflösung von Domainnamen möchte ich Dinge einmal in meinem Netzwerk einstellen. Daher habe ich im DHCP-Server den Domänennamen und den DNS-Server festgelegt, damit alle Computer das Recht erhalten, resolv.confeinschließlich

  • Primäre DNS-Server-IP
  • Domain
  • Suchanweisung

Dies hängt vom DHCP-Server und der gewünschten Netzwerkkonfiguration ab. Ich persönlich mag keine benutzerdefinierte Konfiguration des Computers, wenn sie für das Netzwerk allgemein ist

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.