A pergunta explica o problema. Durante meses nunca tive problemas nesse sentido. Então, ontem de manhã, não consegui entrar na minha VM! Demorou muito para solucionar o problema, 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 faço para corrigir isso?
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
Responder1
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 (como no 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 este arquivo, ele deverá estar em formato de texto simples (sem formatação alguma), com finais de linha no estilo unix (linefeeds). Você pode usar um editor de linha de comando como vi
ou nano
; se você quiser um editor GUI, eu recomendoTextWranglerou seu irmão mais velhoBBpara editar arquivos como este, já que eles são bons em não adicionar coisas falsas "úteis" aos arquivos que você edita e também podem usar direitos de administrador para editar arquivos do sistema (como /etc/hosts).
(Além disso, não é realmente visível ou importante, mas são caracteres de tabulação entre os endereços e nomes.)
Para testar pesquisas como esta, use dscacheutil
( dscacheutil -q host -a name localhost
) em vez de algo como dig
. A razão para usar dscacheutil
é que dig
(e host
e nsloogup
) ignora a política de pesquisa do sistema e apenas verifica o DNS diretamente, enquanto dscacheutil
usa a política de pesquisa completa do sistema. Como resultado, dig
não verá entradas em/etc/hosts, nem fará pesquisas mDNS (Bonjour), nem procurará entradas de computador em serviços de diretório, nem verá entradas em cache de pesquisas anteriores, ou...
Quando você tiver o arquivo hosts configurado corretamente, esta dscacheutil
será a aparência da saída de:
$ dscacheutil -q host -a name localhost
name: localhost
ipv6_address: ::1
ipv6_address: fe80:1::1
name: localhost
ip_address: 127.0.0.1