'localhost' 不再作为 '127.0.0.1' 的别名用于从 OSX SSH 进入我的 VirtualBox VM。为什么?如何修复?

'localhost' 不再作为 '127.0.0.1' 的别名用于从 OSX SSH 进入我的 VirtualBox VM。为什么?如何修复?

这个问题解释了问题所在。几个月来我从未遇到过这样的问题。然后,昨天早上,我无法进入我的虚拟机!花了很长时间进行故障排除,但解决方案如下:

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(和hostnsloogup) 会绕过系统查找策略并直接检查 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

相关内容