Outils pour utilisateurs

Outils du site


sysadmin:ssh:erreur-resolution-dns

Erreur de résolution DNS avec SSH

La résolution DNS se fait correctement avec certaines commandes (host, nslookup, dig):

$ host host.local
host.local has address 192.168.0.10

Par contre, lorsque on utilise la commande ssh avec le même nom d’hôte, un message d'erreur est retourné:

$ ssh user@host.local
ssh: Could not resolve hostname host.local: Name or service not known

Des commandes différentes peuvent suivre des mécanismes de résolution de nom complètement différents. C'est particulièrement vrai lorsque les FQDNs ne sont pas utilisés (c'est pourquoi ils sont souvent recommandés).

  • Les commandes host et nslookup font des requêtes DNS et consultent en général le fichier /etc/resolv.conf pour déterminer l'adresse du serveur DNS à interroger. Selon la configuration, le domaine pourra être complété si le nom d’hôte n'est pas pleinement qualifié. La plupart du temps donc, la commande ignore les autres sources possible de résolution mais pas systématiquement car sur certaines configuration il existe un cache DNS local (basé sur dnsmaq) qui peut lire les fichiers /etc/hosts ou autres sources avant d'interroger un serveur DNS.
  • La commande openssh suit sa propre méthode de résolution qui peut différer entre les distributions ou les systèmes d'exploitation. En premier lieu elle consulte les alias (host nicknames) définis dans le fichier de configuration ~/.ssh/config. Ensuite elle recherche d'autre sources via la directive hosts: du fichier /etc/nsswitch.conf.
L’Entêté du fichier /etc/nsswitch.conf propose d'installer les paquets glibc-doc-reference et info puis executer: info libc “Name Service Switch” pour obtenir des informations détaillées.
Les commandes itrace et strace peuvent apporter des informations sur le processus de résolution.

Références

sysadmin/ssh/erreur-resolution-dns.txt · Dernière modification : 2021/02/01 21:51 de 127.0.0.1