J'essaie de me connecter d'un système 10.04 à un système 12.04 via SSH. Curieusement, les règles ne resolv.conf
semblent prendre effet que de manière sélective, ce qui me laisse perplexe. Observer:
[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
est en search
ligne /etc/resolv.conf
et l'utilisation host
du nom est correctement recherchée compte tenu de ces règles. Cependant, avec le client SSH, ssh
je reçois l'erreur reproduite ci-dessus. Comment se peut-il? J'ai toujours eu l'impression que les règles de résolution de noms resolv.conf
s'appliquent au système global.
Remarque: /etc/hosts
ne déclare pas du pangolin
tout le nom . Le package openssh-server
est configuré sur la machine cible. La question est uniquement de savoir pourquoi la résolution de noms n'est pas cohérente entre ces deux programmes.
Une autre remarque: la commande fonctionne bien lorsque j'entre le nom de domaine complet, c'est-à-dire pangolin.subdomain.domain.tld
.
Pendant ce temps, j'ai redémarré la machine cliente (10.04) et le problème persiste. Un démon de mise en cache DNS n'est pas installé, donc je pense que cela n'aurait pas dû être un problème de toute façon.
Les informations demandées dans le commentaire:
$ grep host /etc/nsswitch.conf
hosts: files dns
/etc/resolv.conf
, J'ai transformé les noms de domaine de manière cohérente:
# 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
... et le plein /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
... et /etc/network/interfaces
, qui est la source du resolv.conf
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.
Remarque: la transformation des noms de domaine a été effectuée avec sed
, il est donc cohérent entre les différents fichiers reproduits.
Il n'y en a pas ~/.ssh/config
, mais voici le global ( /etc/ssh/ssh_config
), rétréci par souci de concision:
$ 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
mtr pangolin
?
/etc/resolv.conf
et la sortie de cette commandegrep host /etc/nsswitch.conf
?