問題說明了問題。幾個月來我從未遇到任何此類問題。然後,昨天早上,我無法進入我的虛擬機器!花了很長時間來排除故障,但解決方案如下:
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 樣式的行結尾(換行符)。您可以使用命令列編輯器,例如vi
或nano
;如果你想要一個 GUI 編輯器,我傾向於推薦文本牧馬人或它的老大哥BB編輯用於編輯這樣的文件,因為它們擅長不向您編輯的文件添加虛假的“有用”內容,並且還可以使用管理員權限來編輯系統文件(例如 /etc/hosts)。
(此外,它並不是真正可見或重要,但這些是位址和名稱之間的製表符。)
要測試這樣的查找,請使用dscacheutil
( dscacheutil -q host -a name localhost
) 而不是類似 的東西dig
。使用的原因dscacheutil
是dig
(andhost
和nsloogup
) 繞過系統查找策略,直接檢查 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