Quando tento fazer o SSH para um host na rede chamado storage
, recebo uma falha na resolução de DNS:
$ ssh storage
ssh: Could not resolve hostname storage: Name or service not known
Mas quando eu consulto o DNS com o host, ele funciona
$ host storage
storage has address 192.168.20.103
Como é que host
pode encontrar o IP, mas ssh
não pode?
domain-name-system
ssh
jldugger
fonte
fonte
storage
é um domínio de nível superior ativo na Internet.sto
e depois clico em Tab.Respostas:
ssh
ehost
resolva nomes seguindo caminhos completamente diferentes; portanto, não surpreende que eles produzam resultados diferentes às vezes, principalmente quando o nome a ser resolvido não é um FQDN (daí a sugestão de usar FQDNs em todos os lugares).Você não menciona nada sobre o seu sistema operacional e a configuração do sistema, por isso tenho que mantê-lo geral, de olho no Linux: os detalhes do MacOS são um pouco diferentes e o Windows ainda mais, mas os conceitos gerais são os mesmos.
host
consulta o DNS, então, basicamente, ele/etc/resolv.conf
pesquisa e consulta os servidores listados lá, possivelmente anexando um nome de domínio se o nome do host ainda não estiver totalmente qualificado. Ele ignora todas as outras fontes possíveis, mas lembre-se de que hoje em dia muitos sistemas executam um servidor DNS de armazenamento em cache local (geralmentednsmasq
) que lê/etc/hosts
e outras fontes antes de consultar outros servidores DNS, portanto, sehost
consultar esse servidor local, os resultados/etc/hosts
poderão se infiltrar.ssh
segue seu próprio caminho. Vou descrever o queopenssh
faz no Linux, outras implementações diferem. Primeiro, ele procura apelidos de host definidos nos arquivos de configuração (em todo o sistema/etc/ssh/ssh_config
e por usuário~/.ssh/config
) e, em seguida, procura outras fontes na ordem especificada pelahosts:
diretiva em/etc/nsswitch.conf
. Diga que é algo como:isso significa: procure
/etc/hosts
e, em seguida, consulte o DNS (/etc/resolv.conf
novamente). Outras fontes possíveis são obsoletasnis
enetinfo
serviços, LDAP, diretório ativo, o nome delas.Para depurar seu caso específico, você deve seguir o caminho que sua implementação
ssh
segue e descobrir onde ele fica preso.fonte
/etc/nsswitch.conf
para lerhosts: files dns
funcionou para mim. Apenas como uma observação interessante, eu configurei vários Raspberry Pis com Raspian Jessie nas últimas semanas, e todos eles exigiram essa alteração.