Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      最后更新:2022-07-02 11:57:09 手机定位技术交流文章

      SFTPGo是一个完整的功能,高度可配置化,支持定制HTTP/S、FTP/S和WebDAV SFTP服务。它支持本地文件系统,加密本地文件系统,S3(兼容)对象存储,Google云存储,Azure Blob存储,各种存储格式,如SFTP。

      通过SFTPGo,你可以基于HTTP/S构建,FTP/S,WebDAV SFTP文件协议云存储 服务器 ,当你创建用户时,能够定制多个用户权限,这包括限制访客的IP地址、上传和下载带宽、可以访问的特定文件类型、可以使用的文件协议、二次认证、最大数量的同步对话、可以使用的磁盘配额.. 多个权限设置等。

      同时,用户可以轻松共享文件,甚至可以设置最多访问文件的次数,如果访问数超过无法访问文件的次数,等等。

      本文基于Unraid系统,向读者介绍该服务的安装和使用。该工具在社区中没有描述,所以如果描述不正确,请纠正。

      1.多克安装

      进入Unraid的APP应用程序存储器,直接搜索相应的Docker应用程序,选择安装来访问Docker的配置和安装接口:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      Unraid商店的SFTPGo模板已经为我们配置了大部分参数,通常我们只需要修改 Share Access路径映射参数和 passive Mode IP变量参数。

      • 共享访问:设置要映射在容器中的路径,用于访问SFTPGo的文件夹。

        例如,在Unraid中,作者创建了一个名为sftpgo的共享文件夹,其绝对路径为

        /mnt/user/sftpgo将它映射到/unraid路径中":

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      • 消极模式IP:设置内部网络的IP地址为Unraid:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      在参数配置后,可以通过单击“应用”开始拖动图像并创建容器进行其他配置,无需修改。

      安装后,输入 http://ip地址: 221 来访问WebUI接口(221端口是WebUI访问端口)。

      本地文件系统和用户配置

      初始安装完成后,登录页自动跳到/web/admin/setup的URL接口页,并请您创建系统管理员用户:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      这里作者填入一个管理员帐户并点击创建管理员完成创建:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      登录后,在左边的“状态”系统服务状态栏上点击显示当前系统服务状态:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      从“状态”页面可以查看SFTPGo当前服务和功能的状况,这里共有六个项目,它们是 SFTP/SSH 、 FTP 、 WebDAV 、 Defender 、 Multi-factor authentication 和 Data provider 。其中第一个三个,分别是SFTP/SSH、FTP和WebDAV,显示当前的开放状态和被监视的端口号码等。所以当你需要使用文件传输协议时,你可以到这个接口查看相应的端口号码,以便进行访问。 以下为 Defender 、 Multi-factor authentication 和 Data provider 的简单描述:

      以下内容在官方的Github项目中解释,但由于社区不能发布链接,请到项目并亲自搜索相应的内容。

      • Defender: Defender是SFTPGo的保安保护工具,用于SFTP、HTTP、FTP和WebDAV等服务。可以防止DoS攻击,自动锁定(IP、访问内容)也可以根据配置策略实现。

      • 多因素认证:这指的是目前由SFTPGo打开的认证方法,SFTPGo支持多个认证方法,例如,二元认证,2FA, Keyboard Interactive Authentication, SSH certificate authentication等。它 还 为 用户 提供 了 对 某些 认证 方法 的 自己 定义 的 相应 方法 ;

      • 数据提供者:数据库配置。SFTPGo支持PostgreSQL、MySQL和CockroachDB外部数据库,没有这些数据库的相应配置(如我们现在有),默认情况下,SQLite内部用于存储数据库的数据(在容器启动时自动创建)。所以如果你不想使用内置SQLite作为数据库,因此,您可以在多克配置中添加下列变量来链接到外部数据库:例如,您在Unraid上安装了Mariadb,然后可以添加下列变量:

        • SFTPGO_DATA_PROVIDER__DRIVER:数据库类型,设置为"mysql";

        • SFTPGO_DATA_PROVIDER__NAME:数据库名称,要求您先在数据库中创建它。例如,如果您在MySQL中创建了一个名为"sftpgo"的数据库,那么填入"sftpgo";

        • SFTPGO_DATA_PROVIDER__HOST:输入数据库的IP地址;

        • SFTPGO_DATA_PROVIDER__PORT:数据库端口;

        • SFTPGO_DATA_PROVIDER__USERNAME:数据库用户名;

        • SFTPGO_DATA_PROVIDER__PASSWORD:数据库用户密码;

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      为本地存储创建虚拟文件夹

      我们需要做的第一个步骤是创建一个本地存储器,然后单击“文件夹”进入配置界面:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      在此,作者创建了一个叫做共享的本地后端存储文件夹,该文件夹在容器中的/unraid文件夹下映射(注意当存储格式使用Local时需要绝对路径):

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      存储后端的描述:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      • 本地:即本地存储,也是最常用的格式,可以将命名空间文件夹作为存储目录;

      • Local encrypted(Data At Rest Encryption,静态数据加密:SFTPGo通过其cryptfs虚拟文件系统支持静态数据加密,在这种模式下,SFTPGo在上传和/或下载时可透明地加密和解密数据(来自本地磁盘),确保服务器端的静态文件总是加密.

        需要注意的是,如果你选择这种存储方式,所以当你设置你的本地文件夹时,这个文件夹不能包含文件,也就是说,您需要为使用这种加密的存储类型创建一个空的文件夹,否则系统将试图解密未被最初加密的现有文件,并且会失败;

      • AWS S3/Google Cloud Storage/Azure Blob Storage: 亚马逊 谷歌和 微软 有关存储服务,如云存储,这里就不做介绍了,如果你有兴趣,你可以去描述;

      • SFTP:支持存储作为后端的其他SFTP服务器的连接,但这是一个简短的介绍,请参阅官方文件。

      (二)创建用户和服务相关权限

      在SFTPGo中,有许多可配置的用户权限配置选项,并且这个部分需要花费较长的时间来介绍。

      在设置后端存储器后,我们需要创建相应的用户,并给用户具体权限使用我们构建的SFTPGo服务。

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      公共钥匙:非强制性,但如果您不填写上述帐户密码,然后您必须在这里填写公共钥匙,二选一。SSH登录的公共键,相应的公共和私钥可以在Linux上通过ssh - keygen命令生成,在生成后复制公共键的内容,并在此贴上公共键文本框,这里不多做介绍。

      这里作者创建了一个名为Jackie的用户,并设置相应的密码,然后我们介绍这个用户组件的相应的配置。

      组和文件系统:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      用户组: SFTPGo支持创建用户组,用户可以通过用户组进行批量管理,在给用户组设置相应的权限后,属于相应的用户组的用户将继承用户组的权利,我相信每个人都明白这一点。它的创建方法与用户创建相似,因此,本条不介绍用户组的内容,大家去尝试即可。

      文件系统: 用于设置SFTP/FTP/WebDAV用户家庭目录,需要一个绝对路径,并且可以空置。

      在SFTPGo中,SFTP/FTP/WebDAV 用户的家目录存储在系统中的 /srv/sftpgo/data/<username> 文件夹下,因为当我们创建多克时,文件夹/srv/sftpgo/data已映射,所以我们可以在这里设置其他路径,不需要手动,直接留空即可。

      默认情况下,每个用户只能访问自己的家庭目录,上传文件到自己的家庭目录,添加或修改文件,共享自己的文件,并通过登录到WebUI接口在自己的文件上执行相应的操作,如图所示:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      虚拟文件夹和配额:

      虚拟文件夹: 虚拟文件夹是本地文件系统和虚拟路径之间的映射.以下图为例,作者分别设置两个虚拟路径/share_media和/share_book。share_media和 share_book的虚拟文件夹都指先创建的本地文件夹共享(本地路径是/unraid/share)。

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      但需要注意的是,对一个用户来说,本地存储的文件夹只能与虚拟文件夹相符,所以当我们在这里点击提交在页面右下角提交用户创建的信息时,验证错误:文件夹"共享"被复制。

      也就是说,在同一用户下,共享本地文件夹不能映射到多个虚拟文件夹中。

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      所以在这里我们可以选择删除一个虚拟文件夹,例如删除 share_media:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      删除后:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      配额:配额指用户可用于这个虚拟文件夹的存储空间(配额大小)和可上传的文件量(配额文件)。与惠集团的用户配额限制一样,以下图为广东新成立的用户使用50G фото书套件的空间(但不限制文件数目):

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      为了回应我们,我们限制了Jackie用户存储空间为10MB,不能上传超过两个文件:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      存储空间的分配是单位字节,由于我们通常使用MB来计算大小,我们可以在网站上进行单位转换:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      需要特别说明的是,如果配额大小或配额文件设置为-1,这意味着虚拟文件夹的配额仅限于用户的配额,这意味着只有这个用户有使用这个虚拟文件夹的权限,因此如果这个虚拟文件夹想被共享给其他用户使用,那么你不能把它设置为-1。

      Profile (用户文件信息): 此设置可以设置用户激活状态,设置过期时间,API认证功能,以及其他相关的用户字符描述,而不需要特别注意。

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      ACLs (Access Control Lists, User Access Control Lists):在这个模块中,我们可以使用SFTPGo提供的各种复杂的权限控制设置来定义一个用户的具体权限范围。

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      如下图所示,我们可以从许可菜单上拉下,你可以猜出用户可以使用哪些权限(例如下载-下载权限,上传-上传权限,rename-file rename..),也可以保持默认*常数,为使这个用户使用所有权利,然后在ACLS模块中设置的其他权限,以覆盖相应的功能权限:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      • 每个目录权限: SFTPGo允许设置虚拟权限,例如:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      根据上图,我们限制Jackie用户在/read-only和/subdir路径下访问内容:虽然这个用户有默认的全权(即在允许权菜单中选择*),但是这个用户只能在/read-only路径下查看文件(列表,这个用户对/subdir的内容没有权利(即没有查看、下载、重命名、删除等权限的所有权),因为我们没有选择/subdir右边的权限列表中的任何权限。

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      • 每个目录模式限制:假设在/read-only路径中要限制用户权限到png和jpg图像(无法下载、修改等),所以你可以通过使用Per-directory模式限制来配置它。如下图所示:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      该函数基于shell模板,相应的文件可以通过组合 、 字符集等匹配.例如, zip 、 txt 、 pdf 文件在/read-only 文件夹上被限制在上面的图中,虽然这些文件是可见的,用户不能修改、上传或下载这些文件。

      • 其他设置:如下图,除了对特定文件夹的限制外,连接到SFTPGo服务器的用户也可以使用最大同时សម័យ(Max sessions)。拒绝协议(SSH, FTP, DAV, HTTP),拒绝登录方法,需要二次认证的协议(HTTP, SSH, FTP),拒绝和允许访问特定IP地址等。我不打算在这里进入细节。

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      磁盘配额和带宽限制: 此设置限制了用户可用的存储空间、上传的文件数目和带宽大小等一系列权限。

      以前,当我们设置一个虚拟文件夹时,我们可以限制用户可用于虚拟文件夹的存储空间和文件量,但是如果虚拟文件夹的分配设置为-1,那么虚拟文件夹的分配限制在分配大小。

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      完成用户创建:大部分用户设置已经引入,我们只需要右下角单击提交,才能提交相关设置完成用户创建。

      更新后切断用户意味着,如果您修改了该用户的相关设置并检查了此选项,所以如果这个用户上网,它会迫使用户退出,以此来让配置生效,用户可以重新登录并应用新的用户配置。

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      上传和下载文件

      在前面的章节中,我们创建了一个名为Jackie的用户,现在我们可以使用这个用户登录到WebUI。

      退出当前管理员用户:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      单击WebClient,进入正常用户登录窗口:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      输入用户帐户密码:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      输入共享媒体文件夹:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      单击“上传”箭头将文件上传到网上:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      因为作者以前限制了向这个用户上传文件,限制这个用户(jackie)以ziptxtpdf格式上传文件,所以当你在这里上传这些类型的文件时,你会收到一个错误消息,建议拒绝权限的错误,告诉用户不要上传这种类型的文件:

       Upload zip file time error Upload zip file time error

      Upload zip file time error

       Uploading txt file times error Uploading txt file times error

      Uploading txt file times error

      除了上传文件外,您可以以网页的形式重新命名、删除和下载文件夹中的数据。

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      如上图所示,我们只需要选择要共享的文件,然后按共享按钮,然后在设置接口来配置相应的选项后,生成相应的共享选项,如下图所示:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      这些链接的类型如下:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      如果您共享文件夹,请按上图中的第二个链接浏览并以文件列表的形式共享:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      如果设置最大トークン,那么当访问数超过最大トークン数时,则表示不能访问,因为共享访问数已经耗尽:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      使用软件客户端登录并上传

      常见的FTP、SFTP和WebDAV软件包括RaiDrive和WinSCP,两者都在这里显示。

      (i)使用RaiDrive下载WebDAV和SFTP

      • 挂载 WebDAV

      输入SFTPGo服务器IP地址和端口号(WebDAV是10080端口)并输入上传的帐户密码。

      如果您不想在这里使用 https,因为我们正在上传到家庭网络,点击取消使用HTTP连接方法。

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      • 挂载 SFTP

      挂载方式同理:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      (二)使用WinSCP连接SFTPGo

      WinSCP同时支持多个文件协议,并且连接的方式是相同的。您可以通过输入相应的IP地址、帐户和密码来连接:

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      Unraid SFTPGo 搭建与使用:兼具多功能与自定义的高性能SFTP服务

      五、结尾

      介绍了SFTPGo的一般应用.除本条所载内容外,还有许多值得研究和研究的功能。包括防护、防护功能、二级TLS验证、用户模板、API接口等,但本文没有介绍。如果读者感兴趣,他们可以到官方项目学习更多(官方文件写得非常详细)。

      (完)

      作者声明,本文无关紧要,欢迎有价值朋友的理性交流和和谐讨论

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/29000.html

          热门文章

          文章分类