这个问题解释了问题所在。几个月来我从未遇到过这样的问题。然后,昨天早上,我无法进入我的虚拟机!花了很长时间进行故障排除,但解决方案如下:
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
(和host
和nsloogup
) 会绕过系统查找策略并直接检查 DNS,而 则dscacheutil
使用完整的系统查找策略。因此,dig
不会在 /etc/hosts 中看到条目,也不会执行 mDNS (Bonjour) 查找,也不会在目录服务中查找计算机条目,也不会看到以前查找的缓存条目,或者...
当您正确设置 hosts 文件后,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