it-swarm.com.de

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

Wie erfahre ich die IP-Adresse eines Hosts somename, zu dem ich ssh kann? Wenn ich nslookup auf diesem Host mache, heißt es "keine Antwort". Wie kann ssh dann seinen Namen auflösen?


Weder /etc/hosts Noch .ssh/config Erklärung hat funktioniert.


BEARBEITEN

Entschuldigung, somename ist voll qualifiziert.

ssh somename.somedomain

funktioniert, während

ping somename.somedomain

und

nslookup somename.somedomain

nicht

16
Dims

Nslookup ist ein Programm zum Abfragen von Internet-Domain-Name-Servern . Nslookup eignet sich sehr gut zum Abfragen von DNS-Servern, bietet jedoch nicht das gesamte Bild, wenn es um die Namensauflösung geht.

Unter Linux wird die Namensauflösung am häufigsten von NSS gesteuert, das von /etc/nsswitch.conf Konfiguriert wird. Insbesondere enthält diese Konfiguration einen hosts -Eintrag. Zum Beispiel:

hosts:          files dns

Im obigen Eintrag sehen Sie, dass als erstes files gefolgt von dns abgefragt wird, was bedeutet, dass /etc/hosts Vor DNS abgefragt wird. Andere Optionen sind vorhanden, einschließlich LDAP , Multicast-DNS und GEWINNT =.

Bei der direkten Beantwortung Ihrer Frage löst SSH den Hostnamen mithilfe von NSS (Abrufen von Ergebnissen aus mehreren Quellen) in eine IP-Adresse auf, wobei nslookup nur den DNS abfragt.

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

getent hosts somename

Auch Bei SSH können Sie hostspezifische Informationen in /etc/ssh/ssh_config Und ~/.ssh/config Konfigurieren. Auf diese Weise können Sie sogar eine IP-Adresse für einen Hostnamen angeben, wobei die Namensauflösung vollständig übersprungen wird:

Im Folgenden wird SSH angewiesen, 192.168.1.25 Sowohl für dev als auch für dev.example.com Zu verwenden. SSH verwendet diese Adresse ob oder nicht Diese Namen existieren als DNS-Namen für eine andere IP:

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

Woher weiß ich die IP-Adresse eines Hosts somename, zu dem ich ssh kann?

Verwenden Sie das ausführliche Flag (-v) Des Befehls ssh:

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 ssh dann seinen Namen auflösen?

Die wahrscheinlichste Ursache dafür, dass ssh einen Hostnamen auflösen kann, den nslookup nicht auflösen kann, ist, dass er auf der Ebene ssh konfiguriert ist.

Per die ssh_config(5) Handbuchseite gibt es drei Stellen, an denen ssh nach Konfigurationsdateien sucht:

  1. befehlszeilenoptionen
  2. benutzerkonfigurationsdatei (~/.ssh/config)
  3. systemweite Konfigurationsdatei (/ etc/ssh/ssh_config)

Eine dieser Dateien enthält möglicherweise Ihren Hostnamen somename (oder ein Muster, das damit übereinstimmt) als Alias ​​eines anderen Hostnamens oder einer anderen IP-Adresse. Zum Beispiel:

# 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 in den Erläuterungen zur ssh_config(5)-Handbuchseite der Anweisungen Host und HostName sowie im Abschnitt PATTERNS.

10
Jules Lamur

Philip ist fast da, geht aber die .ssh/config rathole, das Sie wahrscheinlich nicht konfiguriert haben.

Die Befehle ...

getent hosts somename

... fragt NSS mit dem hosts: Suchzeile in /etc/nsswitch.conf, anstatt nur DNS wie nslookup. Es ist wahrscheinlich, dass Ihre Unix-Umgebung mehr als einen Namensdienst verwendet. möglicherweise irgendeine Art von AD-Integration.

4
Rich