Wie kann es sein, dass ssh somename funktioniert, nslookup somename nicht?


16

Wie kann ich die IP-Adresse eines Hosts ermitteln, an den somenameich mich wenden kann ssh? Wenn ich nslookupauf diesem Host mache , heißt es "keine Antwort". Wie kann sshder Name dann aufgelöst werden?


Weder Erklärung /etc/hostsnoch .ssh/configgearbeitet.


BEARBEITEN

Sorry somenameist voll qualifiziert.

ssh somename.somedomain

funktioniert, während

ping somename.somedomain

und

nslookup somename.somedomain

nicht


12
Ist es in /etc/hostsoder aufgeführt ~/.ssh/config?
Stephen Kitt

1
Der Name kann auch mit mDNS (Multicast DNS) oder LLMNR (Link-Local Multicast Name Resolution) aufgelöst werden.
Johan Myréen

Möglicherweise befindet sich ein Eintrag in Ihrer .ssh / config-Datei
Tagwint

1
@Dims Du könntest versuchen zu pingen somename.local. .localist eine spezielle Domain für mDNS. Für LLMNR können Sie dieses NMAP-Skript verwenden.
Johan Myréen

2
@ McKenzm Nein, wird es nicht.
Stephen Kitt

Antworten:


31

Nslookup ist ein Programm zum Abfragen von Internetdomänennamenservern . Nslookup eignet sich sehr gut zum Abfragen von DNS-Servern, bietet jedoch nicht das gesamte Bild für die Namensauflösung.

Unter Linux wird die Namensauflösung am häufigsten von NSS gesteuert, das von konfiguriert wird /etc/nsswitch.conf. Insbesondere enthält diese Konfiguration einen hostsEintrag. Beispielsweise:

hosts:          files dns

Im obigen Eintrag können Sie sehen, dass dem ersten abzufragenden Element filesfolgt dns, was bedeutet, dass /etc/hostses vor DNS abgefragt wird. Weitere Optionen sind LDAP , Multicast-DNS und WINS .

Wenn SSH Ihre Frage direkt beantwortet, wird der Hostname mithilfe von NSS in eine IP-Adresse aufgelöst (Ergebnisse werden aus mehreren Quellen abgerufen), wobei nslookup nur den DNS abfragt.

Sie können überprüfen, welche IP NSS einen Hostnamen in getent auflöst. Zum Beispiel zum Auflösen somename:

getent hosts somename

Auch im Falle von SSH können Sie hostspezifische Informationen in /etc/ssh/ssh_configund konfigurieren ~/.ssh/config. Auf diese Weise können Sie sogar eine IP-Adresse für einen Hostnamen angeben und dabei die Namensauflösung vollständig überspringen:

Das Folgende weist SSH an, 192.168.1.25sowohl für devals auch zu verwenden dev.example.com. SSH verwendet diese Adresse, unabhängig davon, ob diese Namen als DNS-Namen für eine andere IP existieren:

# contents of $HOME/.ssh/config
Host dev dev.example.com
    HostName 192.168.1.25

10

Wie erkenne ich die IP-Adresse eines Hosts, den somenameich erreichen kann ssh?

Verwenden Sie das ausführliche Flag ( -v) des sshBefehls:

ssh somename -v

Die Ausgabe sollte unter anderem eine Zeile enthalten, die die aufgelöste IP des Servers anzeigt, zu dem Sie eine Verbindung herstellen:

debug1: Connecting to aur.archlinux.org [5.9.250.164] port 22.

Wenn ich auf diesem Host nslookup mache, heißt es "keine Antwort". Wie kann sshder Name dann aufgelöst werden?

Die wahrscheinlichste Ursache für sshdas Auflösen eines Hostnamens, der nslookupnicht aufgelöst werden kann, ist die Konfiguration auf der sshEbene.

Auf der ssh_config(5)Handbuchseite gibt es drei Stellen, an denen sshnach Konfigurationsdateien gesucht wird:

  1. Befehlszeilenoptionen
  2. Konfigurationsdatei des Benutzers (~ / .ssh / config)
  3. Systemweite Konfigurationsdatei (/ etc / ssh / ssh_config)

Eine dieser Dateien kann Ihren Hostnamen somename(oder ein dazu passendes Muster) als Alias ​​eines anderen Hostnamens oder einer anderen IP-Adresse enthalten. Beispielsweise:

# explicit alias of somename to 8.8.8.8 IP
Host somename
    HostName 8.8.8.8

# pattern alias (that obviously matches somename) to another hostname
# that is itself resolved via DNS (and that can be nslookup-ed).
Host *
    HostName anotherhostname

Weitere Informationen finden Sie auf der ssh_config(5)Handbuchseite mit Erklärungen Hostund HostNameAnweisungen sowie im PATTERNSAbschnitt.


Diese Antwort beantwortet nicht die Frage, wie ein Hostname erkannt wird, auch wenn es sich nicht um einen Server mit einem DNS-Server handelt.
Johan Myréen

1
In der Antwort wird das sehr wahrscheinliche Szenario richtig erwähnt, in ssh user@someserverdem der someserverDNS-Name "aufgelöst" zu werden scheint (auch wenn dies nicht tatsächlich der Fall ist). Wenn das Host someserverin .ssh/configDatei konfiguriert ist, ist es dann möglich, den Befehl ssh genau als OP-Status zu verwenden, auch wenn sich das überhaupt someservernicht im DNS befindet.
7.

2
@ JohanMyréen Die Ausgabe von ssh -v somenameenthält die IP-Adresse (unabhängig von etwaigen ssh_configEinträgen). Es beantwortet also direkt die Frage "Wie kann ich die IP-Adresse eines Host-Somenamens ermitteln, zu dem ich ssh kann?"
JigglyNaga

4

Philip ist fast da, aber er geht das .ssh/configLoch runter, das Sie wahrscheinlich nicht konfiguriert haben.

Die Befehle ...

getent hosts somename

... fragt NSS über die hosts:Lookup-Zeile ab /etc/nsswitch.confund nicht nur über DNS nslookup. Es ist wahrscheinlich, dass Ihre Unix-Umgebung mehr als einen Namensdienst verwendet. möglicherweise irgendeine Art von AD-Integration.


3
Ich würde nicht sagen, dass ich diesen Weg gegangen bin. Der Vollständigkeit halber habe ich ein "auch" hinzugefügt.
Philip Couling

@PhilipCouling Sicher, aber Ihr "pre-also" ist unvollständig - Sie zeigen nicht, wie Sie einen Namen willkürlich auflösen können, wenn die Frage nach "$ thing versus nsloookup" lautet.
Rich

3
Wie bereits zu Q kommentiert, hostist normalerweise Teil von bind-utils (oder gleichwertig) und wie beides nslookupund digverwendet nur DNS. OTOH getent hosts(oder möglicherweise ahosts) macht das, was Sie beschreiben.
dave_thompson_085

@ dave_thompson_085 Falsch. hostfragt andere Namensdienste ab. Einverstanden getent hostsist dies die beste eindeutige Methode, um "alle konfigurierten Namensdienste" abzufragen.
Rich

1
hostist laut Handbuch nur DNS-fähig und wird durch Tests auf den von mir verwendeten Systemen (CentOS, Ubuntu, FreeBSD, Solaris) sowie im Upstream bestätigt . Siehe auch die (nahen) Dummköpfe, die ich zum Q kommentiert habe und die dies auch sagen.
Dave_Thompson_085
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.