it-swarm.com.de

Warum löst SSH diesen Hostnamen nicht auf?

Wenn ich versuche, SSH an einen Host im Netzwerk mit dem Namen storage zu senden, wird ein DNS-Auflösungsfehler angezeigt:

$ ssh storage
ssh: Could not resolve hostname storage: Name or service not known

Aber wenn ich DNS mit Host abfrage, funktioniert es

$ Host storage
storage has address 192.168.20.103

Wie kommt es, dass Host die IP finden kann, ssh jedoch nicht?

13
jldugger

ssh und Host lösen Namen auf völlig unterschiedlichen Pfaden auf, so dass es nicht verwunderlich ist, dass sie manchmal unterschiedliche Ergebnisse liefern, insbesondere wenn der aufzulösende Name kein FQDN ist (daher der Vorschlag, FQDNs überall zu verwenden .)

Sie erwähnen nichts über Ihr Betriebssystem und Ihre Systemkonfiguration, daher muss ich es allgemein halten, mit Blick auf Linux: MacOS-Details sind etwas anders und Windows noch mehr, aber die allgemeinen Konzepte sind dieselben.

  • Host fragt DNS ab, sieht also im Grunde genommen in /etc/resolv.conf aus und fragt die dort aufgelisteten Server ab, wobei möglicherweise ein Domänenname angehängt wird, wenn der Hostname noch nicht vollständig qualifiziert ist. Es ignoriert jede andere mögliche Quelle, aber beachten Sie, dass heutzutage viele Systeme einen lokalen Caching-DNS-Server (normalerweise dnsmasq) ausführen, der /etc/hosts Und andere Quellen liest, bevor andere DNS-Server abgefragt werden. Wenn also Host fragt den lokalen Server ab, der sich aus /etc/hosts ergibt.

  • ssh folgt seinem eigenen Pfad. Ich werde beschreiben, was openssh unter Linux macht, andere Implementierungen unterscheiden sich. Zuerst wird nach Host-Spitznamen gesucht, die in Konfigurationsdateien definiert sind (systemweit /etc/ssh/ssh_config Und pro Benutzer ~/.ssh/config), Dann werden andere Quellen in der von der angegebenen Reihenfolge durchsucht hosts: Direktive in /etc/nsswitch.conf. Sagen wir, es ist so etwas wie:

    hosts: files dns
    

    dies bedeutet: Schauen Sie in /etc/hosts und fragen Sie dann den DNS ab (/etc/resolv.conf erneut). Andere mögliche Quellen sind die veralteten Dienste nis und netinfo, LDAP, Active Directory, wie Sie sie nennen.

Um Ihren speziellen Fall zu debuggen, sollten Sie dem Pfad folgen, dem Ihre Implementierung von ssh folgt, und herausfinden, wo sie stecken bleibt.

29
Dario