「localhost」不再是「127.0.0.1」的別名運作,無法透過 SSH 從 OSX 登入我的 VirtualBox 虛擬機器。為什麼,以及如何解決?

「localhost」不再是「127.0.0.1」的別名運作,無法透過 SSH 從 OSX 登入我的 VirtualBox 虛擬機器。為什麼,以及如何解決?

問題說明了問題。幾個月來我從未遇到任何此類問題。然後,昨天早上,我無法進入我的虛擬機器!花了很長時間來排除故障,但解決方案如下:

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

那麼,為什麼會發生這種情況,更重要的是,我該如何解決它?

我嘗試過dig localhost,這似乎告訴我 localhost 和 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

答案1

localhost 通常在 /etc/hosts 檔案中定義,而不是在 DNS 中(儘管您的 DNS 有一個緊急備份項目)。以下是 OS X 中 /etc/hosts 的正常內容(從 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

請注意,如果您需要編輯/重新建立此文件,則它必須採用純文字格式(完全沒有格式),並具有 Unix 樣式的行結尾(換行符)。您可以使用命令列編輯器,例如vinano;如果你想要一個 GUI 編輯器,我傾向於推薦文本牧馬人或它的老大哥BB編輯用於編輯這樣的文件,因為它們擅長不向您編輯的文件添加虛假的“有用”內容,並且還可以使用管理員權限來編輯系統文件(例如 /etc/hosts)。

(此外,它並不是真正可見或重要,但這些是位址和名稱之間的製表符。)

要測試這樣的查找,請使用dscacheutil( dscacheutil -q host -a name localhost) 而不是類似 的東西dig。使用的原因dscacheutildig(andhostnsloogup) 繞過系統查找策略,直接檢查 DNS,而dscacheutil使用完整的系統查找策略。因此,dig不會看到 /etc/hosts 中的條目,也不會執行 mDNS (Bonjour) 查找,也不會在目錄服務中查找電腦條目,也不會看到先前查找的快取條目,或...

正確設定主機檔案後,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

相關內容