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

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

我听说在 Mac OS X 上无法通过 SSH 隧道进行 NFS 共享:http://biowiki.org/MountingNFSThroughSSHTunnel

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

答案1

在 Snow Leopard 中,mountportport选项似乎受支持,但如果手册撒谎了(这并不罕见,因为 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交换机看起来不安全。如果您知道更好的配置,请告诉我。谢谢。

相关内容