{{tag>sysadmin netadmin ssh 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 =====
* https://serverfault.com/questions/831747/why-is-ssh-not-resolving-this-hostname