Não é possível resolver o nome do host

6

Então eu tento fazer:

ssh $(hostname)

e isso me diz:

ssh: Could not resolve hostname woofy: Name or service not known

Ele sabe que seu próprio nome de host é "woofy"; por que não pode se conectar a si mesmo?

    
por wrongusername 10.05.2012 / 00:22

2 respostas

7

Então, sabemos hostname returns woofy . Mas esse nome não pode ser resolvido para um endereço IP.

A resposta curta é que você precisa adicionar uma entrada para woofy em /etc/hosts . Faça a resolução para 127.0.0.1. Ou se o seu sistema é compatível com IPv6, :: 1.

Mantenha um backup da versão anterior do /etc/hosts caso você cometa um erro (eu uso o prático pacote etckeeper para isso, mas se você preferir, você pode usar um backup manual ou mesmo o RCS ).

A resposta longa é que a forma como os nomes dos hosts são resolvidos para os endereços IP é controlada por um conjunto de arquivos de configuração que variam ligeiramente entre as variantes do Unix. Você pode configurar seu sistema Unix para resolver nomes de hosts por arquivos de hosts ( /etc/hosts funcionará em quase todos os sistemas Unix) ou por DNS (sistemas que possuem acessibilidade de IP direta à Internet sempre farão isso). Existem outras alternativas também, principalmente menos usadas (incluindo LDAP e NIS / NIS +). Veja o artigo da Wikipedia sobre o Interruptor do serviço de nomes para mais contexto sobre isso.

Editar: se isso ainda causar uma pesquisa de DNS, o problema é provavelmente que a configuração do Serviço de Nomes consulte o DNS antes de /etc/hosts , portanto a alteração para /etc/hosts não terá efeito. Tente ver /etc/nsswitch.conf (como o NSS está configurado varia entre os sistemas operacionais).

    
por 10.05.2012 / 00:26
4

Sistemas Unix possuem uma noção de nome de host que não está relacionado ao subsistema de rede. Esse nome é o que o comando hostname mostra e o que aparece nos logs. Quando você faz uma conexão ssh, ele realiza uma pesquisa de DNS para descobrir o que o nome significa no contexto do < href="http://en.wikipedia.org/wiki/TCP/IP"> família de protocolos TCP / IP em que o SSH opera.

Para sua sanidade, é melhor certificar-se de que esse nome de host esteja de acordo com o que seu servidor DNS de vizinhança diz e com o que (se houver) seu sistema acha que é chamado. Na verdade, os nomes DNS não estão associados a máquinas, mas com interfaces de rede, portanto, seu nome DNS será associado a uma de suas interfaces de rede. Em máquinas sem conexão de rede real, o nome do host deve estar associado à interface loopback .

Na prática, o nome do host é armazenado no arquivo /etc/hostname na maioria das máquinas. Você pode alterá-lo em tempo de execução com o comando hostname ; isso é feito no início do processo de inicialização. A idéia local do nome DNS é armazenada em /etc/hosts , na linha correspondente à interface de loopback ( 127.0.0.1 ) ou a uma das interfaces de rede da máquina.

    
por 10.05.2012 / 03:18

Tags