我在两个 zfs RAID 上有一个 gluster 文件系统,我想设置具有以下要求的文件共享:
1) 数据安全。静态数据已妥善处理,但我需要确保客户端和服务器之间的任何通信都经过加密。
2) 易于访问的挂载点,以便他们可以本地访问文件,并根据需要手动添加/删除。最好不是像 Web 服务器那样明显的攻击面,并且不需要终端用户进行太多配置即可轻松访问(例如,运行脚本会在用户桌面上创建映射目录共享)。
3)用于每晚/每周备份等的同步服务。
对于 1) 我喜欢使用受密码保护的 RSA 密钥通过 SSH 运行所有协议并进行 2FA 身份验证的想法。我一直在考虑为我的最终用户提供受密码保护的 LUKS 拇指驱动器,其中包含适当的 RSA 密钥,并编写一些自动脚本来进行挂载和文件传输。
对于 2) 我担心在使用 SSH 时会遇到第 8 层问题,因为我的大多数最终用户都不太懂技术。此外,网络上可能会有几种不同类型的 Linux、Mac 和 Windows 操作系统。因此,我并不完全确定是否有一种通用的方法可以跨这些不同的平台编写 SSH 连接和 SMB 挂载脚本。对于 Linux 和 Mac,使用 bash 和 ssh 似乎相对比较简单,甚至可能是 sshfs(fuse 的一部分),但对于 Windows,似乎需要最终用户进行大量输入来配置 putty。我认为 docker 应用程序可能会满足这里的需求。因为我可以在 docker 上运行带有所需软件包的 bash shell,将文件服务器共享挂载到 docker,然后与主机共享 docker 文件。我仍然不清楚如何实现这一点,或者是否有更好的解决方案可以满足我跨平台的需求。
对于 3),我考虑通过 ssh 进行 rsync,或者甚至对用户主目录进行 targz,然后删除昨晚的备份,并将新备份 scp 到文件服务器。但这又遇到了与 (2) 相同的问题。另外,我认为 scp 选项会非常耗时且占用大量 io,所以也许 rsync 是这里唯一可行的选择。
编辑:
另外,我应该指出,我也有一个 VPN 路由器。因此,我可以让它们通过路由器,然后挂载所有内容,而无需通过 SSH 隧道传输,因为连接已经加密。唯一的问题是 VPN 路由器的吞吐量很糟糕,至少从我最初的测试来看是这样。另外,我拥有的路由器只允许同时进行 5 个基于密钥的连接,这可能会导致我的最终用户出现访问问题。