Ich versuche, über SSH eine Verbindung von einem 10.04-System zu einem 12.04-System herzustellen. Seltsamerweise resolv.conf
scheinen die Regeln nur selektiv zu wirken, was mich verwundert. Beobachten:
[2] user@mach:~$ ssh pangolin
ssh: Could not resolve hostname pangolin: Name or service not known
[2] user@mach:~$ host pangolin
pangolin.subdomain.domain.tld has address 172.16.7.12
subdomain.domain.tld
ist in der search
Zeile in /etc/resolv.conf
und mit host
dem Namen wird ordnungsgemäß nach diesen Regeln gesucht. Mit dem SSH-Client ssh
erhalte ich jedoch den oben wiedergegebenen Fehler. Wie kann das sein? Ich hatte immer den Eindruck, dass die Namensauflösungsregeln in resolv.conf
system-global gelten.
Hinweis: /etc/hosts
Deklariert den Namen pangolin
überhaupt nicht. Das Paket openssh-server
ist auf dem Zielcomputer konfiguriert. Die Frage ist nur, warum die Namensauflösung zwischen diesen beiden Programmen nicht konsistent ist.
Ein weiterer Hinweis: Der Befehl funktioniert einwandfrei, wenn ich den vollqualifizierten Domänennamen eingebe, d pangolin.subdomain.domain.tld
. H.
In der Zwischenzeit habe ich den Client-Rechner (10.04) neu gestartet und das Problem besteht immer noch. Da kein DNS-Caching-Daemon installiert ist, sollte dies meines Erachtens sowieso kein Problem sein.
Die im Kommentar verlangten Informationen:
$ grep host /etc/nsswitch.conf
hosts: files dns
/etc/resolv.conf
Ich habe die Domainnamen konsequent transformiert:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 172.16.1.1
nameserver 172.16.1.5
search subdomain.domain1.com domain1.com domain2 domain3.com domain2.ccTLD domain3.net dev.domain1.com sdk.dev.domain1.com
... und das Ganze /etc/nsswitch.conf
:
$ cat /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat
group: compat
shadow: compat
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
... und /etc/network/interfaces
, woher kommt resolv.conf
in 12.04:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 172.16.1.234
netmask 255.255.0.0
gateway 172.16.255.254
dns-nameservers 172.16.1.1 172.16.1.5
dns-search domain1.com. domain2. domain3.com. domain2.ccTLD. domain3.net. dev.domain1.com. sdk.dev.domain1.com. subdomain.domain1.com.
dns-domain subdomain.domain1.com.
Hinweis: Die Umwandlung der Domain-Namen wurde mit durchgeführt sed
, sodass sie zwischen den verschiedenen reproduzierten Dateien konsistent sind.
Es gibt keine ~/.ssh/config
, aber hier ist die globale ( /etc/ssh/ssh_config
), der Kürze halber geschrumpft:
$ grep -v '^#' /etc/ssh/ssh_config |grep -v '^[[:space:]]*$'
Host *
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
GSSAPIDelegateCredentials no
$ mtr pangolin
Name or service not known: Success
quelle
/etc/resolv.conf
und die Ausgabe dieses Befehls veröffentlichengrep host /etc/nsswitch.conf
?mtr pangolin
?Antworten:
Während
ssh
andere Programme, wie z. B.ping
der Glibc-Resolver, zum Nachschlagen des Hostnamens (in diesem Fall 'pangolin') verwendet werden, wirdhost
der Name direkt im DNS nachgeschlagen, wobei der Glibc-Resolver umgangen wird. Das ist der unterschiedAngesichts der Tatsache, dass die glibc Resolver, auf Ihrem Computer ist, konfiguriert , um zu versuchen
dns
nachfiles
, ich kann nicht erklären , warum der Resolver nicht , wohost
erfolgreich ist .Ich habe dieses Verhalten bereits beobachtet, als dnsmasq als lokaler Weiterleitungs-Nameserver verwendet wurde (https://bugs.launchpad.net/ubuntu/+source/dnsmasq/+bug/998712), aber Sie verwenden keinen solchen lokalen Nameserver. aber vielleicht war das problem da und hier nicht in dnsmasq sondern im glibc resolver.
quelle
Ihr ssh versucht möglicherweise, IP6 aufzulösen, und läuft dabei aus. Wenn Sie nicht IP6 verwenden versuchen IP6 in dem Deaktivieren
/etc/ssh/ssh_config
von Address von Wechselany
zuinet
.quelle
Ich bin ein paar Mal darauf gestoßen, und es wirft mich immer um, bis ich mich an die sechs Domain-Beschränkungen in der Suchliste in resolv.conf erinnere.
quelle
search
Zeile der Datei enthält mehr als sechs Domainnamen. Der Glibc-Resolver betrachtet nur die ersten sechs Domänen oder 256 Zeichen, je nachdem, welcher Wert geringer ist. Ich spekuliere, dass dashost
Dienstprogramm keine solche Einschränkung hat und dasshost
es erfolgreich ist, den Namen mit der siebten oder späteren Domainnamenerweiterung aufzulösen.dns-search
Zeile als auch einedns-domain
Zeile enthalten sein darf . Diedns-domain
Option ist tatsächlich veraltet. Alle Such-Domain-Namen sollten in derdns-search
Zeile angegeben werden .Ich habe diese Fehlermeldung erhalten, indem ich versehentlich eine Domain-Eintragszeile vor die beiden Nameserver-Zeilen gestellt habe. nslookup hat funktioniert. wget hat funktioniert. ssh, scp, rsync fehlgeschlagen.
Verschieben der Domain unter Nameserver und Speichern der resolv.conf behoben. nichts anderes war für mich notwendig.
quelle
Ich weiß, dass dies eine alte Frage ist, aber ich werde hinzufügen, was für mich funktioniert hat.
Ich hatte das gleiche Problem und fand , dass in meinem
nsswitch.conf
gibt esmdns
zusätzlich zufiles
unddns
. Durch das Entfernen wurdemdns4
dieses Problem für mich behoben.quelle
Ich hatte Probleme beim Zugriff auf meinen SFTP-Server. Der FTP-Benutzer konnte sich nicht von einem anderen Server bei SFTP anmelden. (Solaris - Openssh). Ich habe den "dns" -Eintrag in der nsswitch.conf kommentiert und das Problem behoben.
Vielen Dank, Arun Janardhanan (IBS Software Services)
quelle