Cuando trato de SSH a un host en la red nombrada storage
, recibo un error de resolución de DNS:
$ ssh storage
ssh: Could not resolve hostname storage: Name or service not known
Pero cuando consulto DNS con el host, funciona
$ host storage
storage has address 192.168.20.103
¿Cómo es que host
puede encontrar la IP pero ssh
no puede?
domain-name-system
ssh
jldugger
fuente
fuente
storage
es un dominio de nivel superior en vivo en Internet.sto
y luego presiono Tab.Respuestas:
ssh
yhost
resolver nombres siguiendo rutas completamente diferentes, por lo que no es sorprendente que a veces den resultados diferentes, especialmente cuando el nombre a resolver no es un FQDN (de ahí la sugerencia de usar FQDN en todas partes).No mencionas nada sobre tu sistema operativo y la configuración de tu sistema, así que tengo que mantenerlo en general, con un ojo en Linux: los detalles de MacOS son algo diferentes y Windows aún más, pero los conceptos generales son los mismos.
host
consulta DNS, por lo que básicamente busca/etc/resolv.conf
y consulta los servidores enumerados allí, posiblemente adjuntando un nombre de dominio si el nombre de host aún no está completamente calificado. Ignora todas las demás fuentes posibles, pero tenga en cuenta que en estos días muchos sistemas ejecutan un servidor DNS de almacenamiento en caché local (generalmentednsmasq
) que lee/etc/hosts
y otras fuentes antes de consultar otros servidores DNS, por lo que si lashost
consultas a ese servidor local, los resultados/etc/hosts
pueden arrastrarse.ssh
sigue su propio camino. Describiré quéopenssh
hace bajo Linux, otras implementaciones difieren. Primero busca los apodos de host definidos en los archivos de configuración (en todo el sistema/etc/ssh/ssh_config
y por usuario~/.ssh/config
), luego busca otras fuentes en el orden especificado por lahosts:
directiva/etc/nsswitch.conf
. Digamos que es algo como:Esto significa: buscar
/etc/hosts
y luego consultar el DNS (/etc/resolv.conf
nuevamente). Otras fuentes posibles son los obsoletosnis
y losnetinfo
servicios, LDAP, el directorio activo, los nombras.Para depurar su caso particular, debe seguir el camino que
ssh
sigue su implementación y averiguar dónde se atasca.fuente
/etc/nsswitch.conf
a leerhosts: files dns
funcionó para mí. Solo como una nota al margen interesante, he configurado varios Raspberry Pis con Raspian Jessie las últimas semanas, y todos han requerido este cambio.