'localhost' parou de funcionar como um alias para '127.0.0.1' para SSH em minha VM do VirtualBox do OSX. Por que e como consertar?

0

A pergunta explica o problema. Por meses eu nunca tive problemas nesse sentido. Então, ontem de manhã, não consegui entrar na minha VM! Demorou muito tempo para solucionar problemas, mas aqui estava a solução:

Brendans-Mac-mini:~ Brendan$ ssh -p 3022 user@localhost
ssh: Could not resolve hostname localhost: nodename nor servname provided, or not known
Brendans-Mac-mini:~ Brendan$ ssh -p 3022 [email protected]
[email protected]'s password: 
Last login: Tue Jul  1 22:37:59 2014 from 10.0.2.2

Então, por que isso teria acontecido e, mais importante, como corrigi-lo?

Eu tentei dig localhost , o que parece me dizer que ainda há algum tipo de conexão entre localhost e 127.0.0.1:

Brendans-Mac-mini:~ Brendan$ dig localhost

; <<>> DiG 9.8.3-P1 <<>> localhost
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28989
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;localhost.         IN  A

;; ANSWER SECTION:
localhost.      655360  IN  A   127.0.0.1

;; Query time: 7 msec
;; SERVER: 10.0.1.1#53(10.0.1.1)
;; WHEN: Wed Jul  2 09:44:44 2014
;; MSG SIZE  rcvd: 43
    
por Brendan 07.07.2014 / 15:36

1 resposta

1

localhost é normalmente definido no arquivo / etc / hosts, não no DNS (embora seu DNS tenha uma entrada de backup de emergência para ele). Aqui está o conteúdo normal de / etc / hosts no OS X (a partir do Mavericks):

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0     localhost

Observe que, se você precisar editar / recriar esse arquivo, ele deverá estar no formato de texto simples (sem formatação), com terminações de linha no estilo unix (line feeds). Você pode usar um editor de linha de comando como vi ou nano ; Se você quer um editor de GUI, eu costumo recomendar TextWrangler ou seu irmão mais velho BBEdit para editar arquivos como este, já que eles são bons em não adicionar coisas espúrias "úteis" aos arquivos que você edita, e também podem usar os direitos de administrador para editar arquivos de sistema (como / etc / hosts).

(Além disso, não é realmente visível ou importante, mas esses são caracteres de tabulação entre os endereços e nomes).

Para pesquisas de teste como essa, use dscacheutil ( dscacheutil -q host -a name localhost ) em vez de algo como dig . O motivo para usar dscacheutil é que dig (e host e nsloogup ) ignora a diretiva de pesquisa do sistema e apenas verifica o DNS diretamente, enquanto dscacheutil usa a diretiva de pesquisa completa do sistema. Como resultado, dig não verá entradas em / etc / hosts, nem procurará mDNS (Bonjour) ou procurará entradas de Computador nos serviços de diretório ou verá entradas armazenadas em cache de pesquisas anteriores ou ...

Quando você tem o arquivo hosts configurado corretamente, aqui está a aparência da saída de dscacheutil :

$ dscacheutil -q host -a name localhost
name: localhost
ipv6_address: ::1
ipv6_address: fe80:1::1

name: localhost
ip_address: 127.0.0.1
    
por 09.07.2014 / 19:53