无法通过主机名连接到同一网络上的 Macintosh 计算机。使用 IP 地址即可

无法通过主机名连接到同一网络上的 Macintosh 计算机。使用 IP 地址即可

我正在尝试使用 SSH 通过主机名连接两台 Machintosh 电脑。两台电脑都运行 Mac OS X Yosemite 10.10.2。两台电脑都通过 Telus 品牌的Actiontec T1200H ADSL Wi-Fi路由器(手册的 PDF可在此处获得)。

使用计算机主机名运行此 SSH 命令时:

ssh macbookpro.local

我收到以下消息:

ssh: Could not resolve hostname macbookpro.local: nodename nor servname provided, or not known

但是如果我使用计算机的 IP 地址运行 SSH 命令:

ssh 10.10.1.12

有用。

到目前为止,我发现这是防火墙问题;如果我关闭两台计算机上的防火墙,SSH 连接就可以正常工作。但是,如何在启用防火墙的情况下使用计算机主机名建立 SSH 连接?这可能吗?

答案1

这两台 Macintosh 电脑是如何连接的?通过路由器吗?主机名的macbookpro.local工作方式是通过以下方式在网络上广播:你好这只是 Apple 对广播/多播网络服务的一个昵称:

Bonjour,也称为零配置网络,能够使用行业标准 IP 协议自动发现本地网络上的设备和服务。

因此,如果这两台 Macintosh 计算机位于同一网络上并共享同一路由器,则如果该路由器阻止广播/多播网络服务,则将macbookpro.local无法找到主机名,因为它将被路由器阻止。

我首先建议你登录路由器(无论型号如何),然后浏览菜单,查看是否设置了广播/多播选项来过滤或阻止广播/多播流量。但查看路由器上的详细信息——Actiontec T1200H ADSL Wi-Fi路由器(手册的 PDF可在此处获得) — 似乎甚至没有办法阻止广播/多播网络流量。所以我的下一个想法是看看 Macintosh 本身的防火墙设置是否以某种方式妨碍了 Bonjour 无法正常工作?也许值得禁用防火墙,至少现在测试一下这个理论。

查看我在 Mac OS X 10.9.5(Mavericks)安装中的防火墙选项,似乎在启用防火墙的情况下取消选中“阻止所有传入连接”复选框将允许防火墙处于活动状态,同时仍允许 Bonjour 服务传递到系统。

当防火墙打开时,单击“防火墙选项...”按钮,您将看到此屏幕,其中有“阻止所有传入连接”复选框:

在此处输入图片描述

在相关说明中,您可以调试这些内容 - 如上所述在这个答案中我发布了这里arp—通过 Mac OS X“终端”测试网络,dns-sd如下所示。例如,要使用arp要查看网络上有哪些设备,只需输入此命令并点击return

arp -a

如果广播/多播流量被发送到您的计算机,则返回的输出将如下所示:

computer-name.local (123.456.789.0) at 00:aa:bb:cc:dd:ee on en0 ifscope [ethernet]
? (192.168.2.2) at bb:88:99:cc:77:aa on bridge100 ifscope [bridge]

这显示computer-name.local的 IP 地址为 ,123.456.789.0而我通过 Wi-Fi 共享以太网连接的临时网络所使用的桥接连接为192.168.2.2

您还可以使用dns-sd(多播 DNS(mDNS)和 DNS 服务发现(DNS-SD)测试工具)从“终端”像这样查看您的计算机是否正在获取另一台机器的主机名:

dns-sd -q [name of computer].local

这假设您已经知道计算机的名称,并且广播/多播正在工作;[name of computer].local用该计算机名称替换。然后输出将类似于以下内容;请注意,123.456.789.0为了举例说明,这是一个假 IP 地址:

    Timestamp     A/R Flags if Name                          Type  Class   Rdata
19:56:22.856  Add     2  4 [name of computer].local.               Addr   IN     123.456.789.0

答案2

macbookpro.localHostName可能是您的 LocalHostName;Mac OS X( 、LocalHostName和)使用的 3 个计算机名称之一ComputerName。如果我没记错的话,它用于 Bonjour 或 AFP。

ssh另一方面,它使用 IP 协议,并且不是 Mac OS X 特有的。它将尝试使用 DNS 解析您的“主机名”。您可以使用以下命令找到您的主机名:

scutil --get HostName

或者简单来说:

hostname

localhost相反,如果您连接回自己的计算机,您也可以使用。

相关内容