'localhost' dejó de funcionar como alias para '127.0.0.1' para realizar SSH en mi máquina virtual VirtualBox desde OSX. ¿Por qué y cómo solucionarlo?

'localhost' dejó de funcionar como alias para '127.0.0.1' para realizar SSH en mi máquina virtual VirtualBox desde OSX. ¿Por qué y cómo solucionarlo?

La pregunta explica el problema. Durante meses nunca he tenido ningún problema en este sentido. Luego, ayer por la mañana, ¡no pude acceder a mi máquina virtual! Tomó mucho tiempo solucionar el problema, pero aquí estaba la solución:

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

Entonces, ¿por qué habría sucedido esto y, lo que es más importante, cómo lo soluciono?

Lo intenté dig localhost, lo que parece decirme que todavía hay algún tipo de conexión entre localhost y 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

Respuesta1

localhost normalmente se define en el archivo /etc/hosts, no en DNS (aunque su DNS tiene una entrada de respaldo de emergencia). Aquí está el contenido normal de /etc/hosts en OS X (a partir de 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

Tenga en cuenta que si necesita editar/recrear este archivo, debe estar en formato de texto sin formato (sin formato alguno), con finales de línea de estilo Unix (saltos de línea). Puede utilizar un editor de línea de comandos como vio nano; Si quieres un editor GUI, te recomiendoTextWranglero su hermano mayorBBpara editar archivos como este, ya que son buenos para no agregar cosas falsas "útiles" a los archivos que edita, y también pueden usar derechos de administrador para editar archivos del sistema (como /etc/hosts).

(Además, no es realmente visible ni importante, pero son caracteres de tabulación entre las direcciones y los nombres).

Para probar búsquedas como esta, utilice dscacheutil( dscacheutil -q host -a name localhost) en lugar de algo como dig. La razón para usarlo dscacheutiles que dig(y hosty nsloogup) omite la política de búsqueda del sistema y solo verifica el DNS directamente, mientras dscacheutilusa la política de búsqueda completa del sistema. Como resultado, digno verá entradas en /etc/hosts, ni realizará búsquedas de mDNS (Bonjour), ni buscará entradas de Computadora en servicios de directorio, ni verá entradas en caché de búsquedas anteriores, o...

Cuando tenga el archivo hosts configurado correctamente, así es como dscacheutildebería verse el resultado:

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

name: localhost
ip_address: 127.0.0.1

información relacionada