是否可以从命令行使用“返回到我的Mac” DNS或路由信息?


8

我经常想连接到Mac,很想利用iCloud来查找IP / DNS路由信息。是否可以在不注册动态DNS服务并在iCloud之外的每台Mac上进行配置的情况下完成此操作?

让我们假设我家里的全天候Mac的主机名是“ maui”,它正在运行Snow Leopard。当我在笔记本电脑上连接到家庭网络时,我可以ssh maui.local。能够ssh maui.whatever.icloud.com或执行任何工作肯定会很好。我猜我需要“ maui”和我的iCloud名称,以使其知道我帐户下的哪台计算机需要连接。

有谁知道通过API或命令行是否可行?我已经浏览了几次公共开发人员信息,但是看不到任何希望。任何指针或代码示例都将受到欢迎。

PS:请不要建议免费的DNS帐户,因为我真的对MobileMe感兴趣,专门针对此问题。我知道它们可以使用,但我希望避免在这些Mac上安装其他任何东西或其他帐户/外部依赖项。


不错的主意,+ 1,希望您能得到答案。
君士坦丁堡

我可以看到Apple不想让用户暴露于此,因为这存在隐私风险,但是拥有一个API肯定很酷。
bmike

1
另请参阅:OS X 10.7 Lion的相同问题(有所不同)。apple.stackexchange.com/questions/53719/…– drfrogsplat 2012
6

Answers:


9

随着10.7的变化,它有所变化,您需要注意的是,它几乎完全使用了IPv6,因此请进行测试ping6traceroute6调试。

它不再通过完成@computername.mobilemename.members.mac.com,现在已经通过完成members.btmm.icloud.com,它不再像您的那样简单mobilemename

步骤1:找出您的iCloud BTMM网域

这些命令中的任何一个都将提供您的BTMM域:

# dns-sd -E
# mDNS -E

输出的格式略有不同,但是您需要输入的是数字ID,类似于12345678.members.btmm.icloud.com

步骤2:列出计算机

您可以使用以下工具浏览该域中的服务,例如ssh服务器:

# dns-sd -B _ssh 12345678.members.btmm.icloud.com

或者,如果您已经知道主机名,则可以直接使用来访问它computer-name.12345678.members.btmm.icloud.com。(您的计算机名称中的任何空格在该域中都是连字符)。

只能从也为同一帐户设置了BTMM的计算机上访问此主机,因为此主机名将解析为IPv6地址,该地址实际上是BTMM计算机之间的加密网络隧道的结尾。

如果要查看特定主机的IPv6地址,可以键入

# dns-sd -G v6 computer-name.12345678.members.btmm.icloud.com

它会输出类似:

17:37:47.504  Add     2  0 computer-name.12345678.members.btmm.icloud.com. FD11:993E:64AE:4DEA:011F:FBD1:F444:11A1%<0>  152

第三步:连接

# ssh username@computer-name.12345678.members.btmm.icloud.com

注意

我不确定该数字是否会改变,因此您以后可能需要或不需要重复步骤1 ...


辉煌!我不确定是否要编辑问题以适合Lion或询问其他问题。我将链接到新问题,以便您可以“回答” Lion问题-此答案非常有用。
bmike


3

我读了几篇有关Back To My Mac的基础文章,据推测有些人已经通过ssh有效地联系了一下,请查看此Macworld帖子中包含的讨论。

该主题中的最佳帖子如下:

使用以下格式作为不同的用户名进行连接:

ssh user.name@hostname.username.members.mac.com。

如果您定期执行此操作,并且希望节省在ssh和scp中始终使用用户名的麻烦,那么请创建一个名为〜/ .ssh / config的文件,其内容如下所示:

主机hostname.username.members.mac.com。用户user.name

主机host2.some.domain.com。用户名2端口2222 LocalForward 3389内部PC:3389

此文件中的第二个主机还包括使用22以外的端口,以及通过使用远程桌面客户端连接到本地主机,从而允许通过远程桌面访问名为internal-pc的Windows计算机。

现在显然苹果已经将.mac切换到MobileMe,所以我不知道是否已切换到.me.com,坦率地说,我没有MobileMe帐户可以对其进行测试。

编辑:您可能想尝试的另一个有趣的帖子是在非常底部

事实证明,这甚至更容易!:P

只需打开终端,转到Shell> New Remote Connection...。

然后选择ssh,然后在其中列出了BackToMyMac计算机(如果操作系统看到的话)。

输入您的用户名,然后单击连接。

瞧,您甚至可以看到所使用的连接字符串。您还可以从此对话框使用ftp / sftp ...到远程Mac。

比输入原始提示中建议的一些shell命令更容易。


可惜这对我不起作用。我可以完美地使用finder和屏幕共享,因此我知道帐户和计算机都已启动并正在运行。带有最新固件的最近时间胶囊是两个Mac的路由器。在过去的两周中,有没有人为他们完成过这项工作?
bmike

热啊 最后一个提示是它。ping和主机不起作用,但是ssh起作用。终端提示真棒。
bmike

甜!乐意效劳。
君士坦丁堡

3

您可以这样将ssh切换到启用了“ Bac to my Mac”的计算机:

ssh -p 22 username@computername.mobilemename.members.mac.com

1
您真的必须告诉它使用默认端口吗?
ConstantineK

ping,主机和ssh到具有三个不同mobilemename的三个单独的计算机名失败。我host yy.xx.members.mac.com not found: 3(NXDOMAIN)从主机尝试中得到错误,ssh: Could not resolve hostname yy.xx.members.mac.com: nodename nor servname provided, or not known并且在ping,主机和ssh尝试失败之前和之后,这三者都可以回到我的mac屏幕共享。您使用什么DNS服务器IP来使其正常工作?
bmike

即使主机和ping不起作用-ssh也开始为我工作。一旦确定哪个比较好,我会打一点并标记答案。
bmike

而且不-我似乎不需要为sftpssh调出端口号-但是拥有它们并不会带来多大伤害;-)
bmike

host不起作用,因为它使用的是DNS解析器,而不是系统解析器。ping不起作用,因为BTTM使用IPv6。试一试ping6,您会看到它的响应。
bahamat 2012年

2

这是因为用于解析的IP地址是版本6。

如果使用ping6或traceroute6,则也可以访问主机。


真的很酷。非常感谢您添加此内容。如果我有机会查看它是否对我有用,您是否介意将您的信息添加到上面的答案中?+2到@pst
bmike

2

非常感谢滚刀ghoppe都有可行的解决方案。主要问题是MobileMe Back To My Mac使用IPv6寻址(如果可用),并且可能专用于IPv6寻址,因此我不认为使用ping6或traceroute6,而ssh显然足够聪明,可以解析IPv4或IPv6。

ssh -p 22 username@computername.mobilemename.members.mac.com. 在今天的测试中对我来说非常可靠。

由于这绊倒了我,因为我期待pinghostnslookup工作,我想我一定会拿的为我工作一个很好的总结。(附图片!-我真的很喜欢图片)

总之sftpsshping6,并traceroute6应与此命名方案工作。

Apple的内置终端(和iTerm)非常适合确保您的用户名和远程简称正确。该名称是简短的主机名(hostname打印出的内容),不一定是Finder在远程Mac上显示的较长的共享名)。

简短的主机名

这是终端机发现“回到我的Mac”计算机正在运行时显示的内容。菜单项是“ 新建远程连接...”,快捷方式是Shift+ Command+ K。它显示查找程序名称“ Mikey's Mac”可能与短主机名mi不同

在此处输入图片说明


1
良好的全面的答案与screenies +1
ConstantineK

滚刀有一个b:p
ConstantineK
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.