我正在尝试使用 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.local
HostName
可能是您的 LocalHostName;Mac OS X( 、LocalHostName
和)使用的 3 个计算机名称之一ComputerName
。如果我没记错的话,它用于 Bonjour 或 AFP。
ssh
另一方面,它使用 IP 协议,并且不是 Mac OS X 特有的。它将尝试使用 DNS 解析您的“主机名”。您可以使用以下命令找到您的主机名:
scutil --get HostName
或者简单来说:
hostname
localhost
相反,如果您连接回自己的计算机,您也可以使用。