„localhost“ funktioniert nicht mehr als Alias ​​für „127.0.0.1“ für den SSH-Zugriff auf meine VirtualBox-VM von OSX aus. Warum und wie kann ich das Problem beheben?

„localhost“ funktioniert nicht mehr als Alias ​​für „127.0.0.1“ für den SSH-Zugriff auf meine VirtualBox-VM von OSX aus. Warum und wie kann ich das Problem beheben?

Die Frage erklärt das Problem. Seit Monaten hatte ich nie Probleme dieser Art. Dann, gestern Morgen, konnte ich nicht mehr auf meine VM zugreifen! Die Fehlerbehebung hat lange gedauert, aber hier ist die Lösung:

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

Warum also ist das passiert und, noch wichtiger, wie kann ich das Problem beheben?

Ich habe es versucht dig localhost, was mir anscheinend sagt, dass immer noch eine Art Verbindung zwischen localhost und 127.0.0.1 besteht:

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

Antwort1

localhost ist normalerweise in der Datei /etc/hosts definiert, nicht im DNS (obwohl Ihr DNS einen Notfall-Backup-Eintrag dafür hat). Hier ist der normale Inhalt von /etc/hosts in OS X (ab 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

Beachten Sie, dass diese Datei, wenn Sie sie bearbeiten/neu erstellen müssen, im Klartextformat (ohne jegliche Formatierung) mit Zeilenenden im Unix-Stil (Zeilenvorschübe) vorliegen muss. Sie können einen Befehlszeileneditor wie vioder verwenden nano; wenn Sie einen GUI-Editor möchten, empfehle ich normalerweiseTextWrangleroder sein großer BruderBBBearbeitenzum Bearbeiten solcher Dateien, da sie den von Ihnen bearbeiteten Dateien keine unerwünschten „hilfreichen“ Dinge hinzufügen und außerdem Administratorrechte zum Bearbeiten von Systemdateien (wie /etc/hosts) verwenden können.

(Außerdem ist es nicht wirklich sichtbar oder wichtig, aber das sind Tabulatorzeichen zwischen den Adressen und Namen.)

Um solche Suchvorgänge zu testen, verwenden Sie dscacheutil( dscacheutil -q host -a name localhost) statt etwas wie dig. Der Grund für die Verwendung dscacheutilist, dass dig(und hostund nsloogup) die Systemsuchrichtlinie umgeht und nur DNS direkt überprüft, während dscacheutildie vollständige Systemsuchrichtlinie verwendet wird. Infolgedessen werden digkeine Einträge in /etc/hosts angezeigt, keine mDNS-Suchvorgänge (Bonjour) durchgeführt, keine Computereinträge in Verzeichnisdiensten gesucht, keine zwischengespeicherten Einträge aus vorherigen Suchvorgängen angezeigt oder ...

Wenn Sie die Hosts-Datei richtig eingerichtet haben, dscacheutilsollte die Ausgabe folgendermaßen aussehen:

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

name: localhost
ip_address: 127.0.0.1

verwandte Informationen