是否可以在Mac OS X上通过SSH隧道从FreeBSD服务器上挂载NFS卷服务?

我听说在Mac OS X上通过SSH隧道的NFS共享是不可能的: http : //biowiki.org/MountingNFSThroughSSHTunnel

我已经尝试了两天,但是我失败了。 这真的不可能吗? 或者我该怎么做?

在Snow Leopard中, mountportport选项似乎是被支持的,但是如果手册在说谎(并不常见,因为苹果通常只是复制FreeBSD手册),那么你将无法做到这一点。 ssh不知道如何隧道或RPC或UDP; 你将不得不把这两个添加到ssh和远程sshd ,特别是Sun RPC将是很难说的。

strings /sbin/mount_nfs似乎表明这些选项实际上是受支持的。)

我成功了! 大多数情况下,我遵循我在问题中链接的教程。 然而问题中使用的操作系统是CentOS与FreeBSD不同的地方。


服务器端configuration

首先使用SSH和NFS启动FreeBSD。 我在VM中使用了全新的安装。 我做了一个目录分享ttt

 mkdir /ttt chmod 777 /ttt 

并通过将此行添加到/etc/exports来通过NFS /etc/exports

 /ttt -alldirs 

并将此行添加到/etc/rc.conf

 mountd_flags="-n" 

全做完了。 不需要更多的服务器端设置工作。

标志-n启用非根安装。 感觉有些安全问题,但是这是最简单的方法。 我会发布一个关于这个标志的安全性的新问题。


客户端configuration

并build立2个SSH隧道。

 ssh -2 -N -L 5000:localhost:2049 [email protected] ssh -2 -N -L 5001:localhost:1019 [email protected] 

test.local是FreeBSD框的地址。 而命令中的localhost意味着FreeBSD盒子本身。 (这将在服务器端进行评估)您必须打开多个terminal窗口,因为我没有设置-f保留SSH前台。 只是为了检查。

端口号2049是NFS服务器的默认端口, 1019mountd默认端口。 您必须始终指定此端口号,因为NFS没有正式的默认端口号。 (这只是事实上的标准:)我不知道mountd。 了解到我必须指定这些该死的端口号的事实了2天。

而在其他terminal中,通过SSH隧道进行挂载。

 mount_nfs -v -o port=5000,mountport=5001,tcp localhost:/ttt /tttm 

我使用-v作为日志消息。 我的Mac上有/tttm文件夹。 这些消息,

 mount localhost:/ttt on /tttm mount flags: 0x0 127.0.0.1 tcp,port=5000,mountport=5001, fh 28 ea58774dc6ccd11b0c000000016a00003300c1da0000000000000000 NFS options: 0x3004200 fg,retrycnt=1,vers=3,sec=sys (1) 

印刷和共享卷出现在位置/tttm


我的方法可能有很多安全问题。 如chmod 777-n开关看起来不安全。 如果你知道更好的configuration,请让我知道。 谢谢。