'localhost' ha smesso di funzionare come alias per '127.0.0.1' per SSHing nella mia VM VirtualBox. Perché e come risolvere?

2

La domanda spiega il problema. Per mesi non ho mai avuto problemi in questo senso. Poi, ieri mattina, non sono riuscito a entrare nella mia VM! Ci è voluto molto tempo per risolvere i problemi, ma ecco la soluzione:

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

Quindi, perché questo sarebbe successo, e ancora più importante, come lo risolvo?

Ho provato dig localhost , il che sembra dirmi che c'è ancora un qualche tipo di connessione tra 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
    
posta Brendan 02.07.2014 - 15:47
fonte

1 risposta

3

[Questo è copiato e amp; leggermente espanso da la mia risposta su Superuser .]

localhost è normalmente definito nel file / etc / hosts, non nel DNS (sebbene il DNS abbia una voce di backup di emergenza per esso). Ecco i normali contenuti di / etc / hosts in OS X (come di 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

Si noti che se è necessario modificare / ricreare questo file, deve essere in formato di testo normale (senza formattazione), con terminazioni di linea in stile unix (linefeeds). Puoi usare un editor da riga di comando come vi o nano ; se vuoi un editor GUI, tendo a raccomandare TextWrangler o suo fratello maggiore BBEdit per la modifica di file come questo, dato che sono utili per non aggiungere spuri elementi "utili" ai file che si modificano e possono anche utilizzare i diritti di amministrazione per modificare file di sistema (come / etc / hosts).

(Inoltre, non è realmente visibile o importante, ma questi sono caratteri di tabulazione tra gli indirizzi e i nomi.)

Per testare le ricerche in questo modo, usa dscacheutil ( dscacheutil -q host -a name localhost ) invece di qualcosa come dig . Il motivo per utilizzare dscacheutil è che dig (e host e nsloogup ) aggira il criterio di ricerca del sistema e controlla direttamente il DNS, mentre dscacheutil utilizza il criterio di ricerca del sistema completo. Di conseguenza, dig non vedrà le voci in / etc / hosts, né le ricerche mDNS (Bonjour), o cercheranno le voci Computer nei servizi di directory, o vedranno le voci memorizzate nella cache da ricerche precedenti, o ...

Quando hai configurato correttamente il file hosts, ecco come dovrebbe apparire l'output di 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
    
risposta data 10.07.2014 - 08:16
fonte

Leggi altre domande sui tag