我听说在 Mac OS X 上无法通过 SSH 隧道进行 NFS 共享:http://biowiki.org/MountingNFSThroughSSHTunnel
我已经尝试了两天,但还是失败了。这真的不可能吗?或者我应该怎么做?
答案1
在 Snow Leopard 中,mountport
和port
选项似乎受支持,但如果手册撒谎了(这并不罕见,因为 Apple 经常只是复制 FreeBSD 手册),那么您将无法做到这一点。 ssh
不知道如何隧道化 Sun RPC 或 UDP;您必须将这两者添加到ssh
和远程sshd
,尤其是 Sun RPC 至少可以说很困难。
(strings /sbin/mount_nfs
似乎表明这些选项实际上是受到支持的。)
答案2
我成功了!我主要按照问题中链接的教程操作。但是问题中使用的操作系统是 CentOS,与 FreeBSD 不同。
服务器端配置
首先,只需使用 SSH 和 NFS 启动 FreeBSD 盒。我在 VM 中使用了全新安装。我创建了一个目录来共享ttt
。
mkdir /ttt
chmod 777 /ttt
并通过将此行添加到/etc/exports
/ttt -alldirs
并将此行添加到/etc/rc.conf
mountd_flags="-n"
全部完成。无需再进行服务器端设置工作。
该标志-n
启用非 root 挂载。感觉有些安全问题,但无论如何这是最简单的方法。我将发布一个关于此标志安全性的新问题。
客户端配置
并建立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 框本身。(这将在服务器端进行评估)您必须打开多个终端窗口,因为我没有设置-f
保留 SSH 前台。只是为了检查。
该端口号2049
是 NFS 服务器的默认端口,也是1019
的默认端口mountd
。您必须始终指定此端口号,因为 NFS 没有官方默认端口号。(这只是事实上的标准 :) 我不知道 mountd。花了 2 天时间才知道我必须指定这些该死的端口号。
并在另一个终端上通过 SSH 隧道挂载。
mount_nfs -v -o port=5000,mountport=5001,tcp localhost:/ttt /tttm
我用-v
它来记录消息。我/tttm
的 Mac 上有文件夹。这些消息,
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
交换机看起来不安全。如果您知道更好的配置,请告诉我。谢谢。