paint-brush
设置 MinIO FTP/SFTP 服务器 — 现在具有比以往更多的数据选项经过@minio
8,293 讀數
8,293 讀數

设置 MinIO FTP/SFTP 服务器 — 现在具有比以往更多的数据选项

经过 MinIO6m2023/07/25
Read on Terminal Reader

太長; 讀書

虽然 S3 API 本质上是优越的,但它缺乏 FTP/SFTP 的简单性以及在高度受限的环境中运行的能力。因此,MinIO 在 MinIO 服务器中添加了对 FTP 和 SFTP 的支持。
featured image - 设置 MinIO FTP/SFTP 服务器 — 现在具有比以往更多的数据选项
MinIO HackerNoon profile picture
0-item
1-item
2-item

想想文件传输协议 ( FTP ) 已经存在多久就觉得很奇怪。它最初由麻省理工学院的学生 Abhay Bhushan 于 1971 年开发,最初用于在 ARPANET 上的计算机之间传输文件。不用说,它已经进化了——具有身份验证、加密和压缩功能。它仍然是通过互联网传输文件的广泛使用的协议,特别是在需要快速可靠地传输大文件或大量文件的情况下。


虽然 S3 API 从根本上来说是优越的,但它缺乏FTP/SFTP的简单性以及在高度受限的环境中运行的能力。因此,MinIO 在 MinIO Server 中添加了对FTPSFTP的支持。有了这个新功能,用户(或应用程序)会认为他们正在与FTP服务器通信,而实际上他们正在与 MinIO 通信。优点应该是显而易见的 - 将数据无缝移动到 MinIO 上,并且从应用程序/用户的角度来看,一切本质上都是相同的 - 从策略、安全性等方面来看。


目前支持的FTP/SFTP操作如下:


ftp 客户端命令

支持的

得到

是的

是的

LS

是的

目录

是的

目录

是的

删除

是的

附加

改名


MinIO 支持以下基于FTP/SFTP的协议来访问和管理数据。


  • 安全文件传输协议 ( SFTP ) – 由互联网工程任务组 (IETF) 定义为 SSH 2.0 的扩展版本,允许通过 SSH 进行文件传输,并可与传输层安全 (TLS) 和 VPN 应用程序一起使用。


  • SSL/TLS 上的文件传输协议 ( FTPS ) – 通过 TLS 证书进行加密的FTP通信。


  • 文件传输协议 ( FTP ) – 最初由 RFC114 定义,并被 RFC765 和 RFC959 未加密的 FTP 通信取代

    • 不推荐这样做


此版本涵盖的内容:


  • 允许访问所有 IAM 凭证(轮换凭证除外),轮换凭证不允许通过FTP/SFTP端口登录。如果您使用轮换凭证,则必须使用 S3 API 端口。


  • 对存储桶和对象的访问通过与传入登录凭证关联的 IAM 策略进行管理。


  • 允许所有人进行身份验证和访问

    • 内置 IDP 用户及其各自的服务帐户
    • LDAP/AD 用户及其各自的服务帐户
    • OpenID/OIDC 服务帐户


  • 在版本化存储桶上, FTP/SFTP仅对最新的对象进行操作。如果您需要检索旧版本,则必须使用S3 API client例如mc


  • 您的存储桶当前使用的所有功能将“按原样”运行,无需任何更改
    -SSE(服务器端加密)
    - 复制(服务器端复制)


本质上,从开发人员/管理员的角度来看,这应该是一个无缝的协议添加。

先决条件和注意事项

此功能从RELEASE.2023-04-20T17-56-55Z开始可用。


假设用户已经创建并配置了相关的访问策略。 MinIO 建议从基本的“读写”预设策略开始,在最终确定用户需要什么级别的限制之前测试所有操作。


FTP/SFTP访问存储桶和对象不需要“admin:*”操作。由于限制,它们可能会被跳过。


重要提示:默认情况下不启用FTP/SFTP 。需要在设置时启用它。此外,没有通过FTP提供的管理功能,这必须通过命令行完成。

用法

在分布式设置中启动 MinIO,并启用FTP/SFTP


 minio server http://server{1...4}/disk{1...4} --ftp="address=:8021" --ftp="passive-port-range=30000-40000" \ --sftp="address=:8022" --sftp="ssh-private-key=/home/miniouser/.ssh/id_rsa" ... ...


以下示例显示使用minioadmin凭据通过ftp客户端进行连接,并列出名为runner的存储桶:


 ftp localhost -P 8021 Connected to localhost. 220 Welcome to MinIO FTP Server Name (localhost:user): minioadmin 331 User name ok, password required Password: 230 Password ok, continue Remote system type is UNIX. Using binary mode to transfer files. ftp> ls runner/ 229 Entering Extended Passive Mode (|||39155|) 150 Opening ASCII mode data connection for file list drwxrwxrwx 1 nobody nobody 0 Jan 1 00:00 chunkdocs/ drwxrwxrwx 1 nobody nobody 0 Jan 1 00:00 testdir/ ...


以下示例显示如何列出对象并通过ftp客户端将其下载到本地:


 ftp> ls runner/chunkdocs/metadata 229 Entering Extended Passive Mode (|||44269|) 150 Opening ASCII mode data connection for file list -rwxrwxrwx 1 nobody nobody 45 Apr 1 06:13 chunkdocs/metadata 226 Closing data connection, sent 75 bytes ftp> get (remote-file) runner/chunkdocs/metadata (local-file) test local: test remote: runner/chunkdocs/metadata 229 Entering Extended Passive Mode (|||37785|) 150 Data transfer starting 45 bytes 45 3.58 KiB/s 226 Closing data connection, sent 45 bytes 45 bytes received in 00:00 (3.55 KiB/s) ...

SFTP 的注意事项

如果服务器上启用了证书,则可以使用SFTP 。如果FTP客户端有能力,则可以使用 TLS 来保护传输。这将需要私钥的附加标志。


以下示例显示使用minioadmin凭据通过sftp客户端进行连接,并列出名为runner的存储桶:


 sftp -P 8022 minioadmin@localhost minioadmin@localhost's password: Connected to localhost. sftp> ls runner/ chunkdocs testdir


以下示例展示了如何通过sftp客户端将对象下载到本地:


 sftp> get runner/chunkdocs/metadata metadata Fetching /runner/chunkdocs/metadata to metadata metadata 100% 226 16.6KB/s 00:00 sftp>

高级选项

更改默认 FTP 端口

默认端口8021可以通过更改


--ftp="address=:3021"

更改 FTP 被动端口范围

默认情况下, FTP会请求操作系统自动提供可用端口,但是您可能希望通过以下方式将其限制为某些受限环境中的特定端口:


 --ftp="passive-port-range=30000-40000"

更改默认 SFTP 端口

可以通过以下方式更改默认端口8022


 --sftp="address=:3022"

传输层安全 (FTP)

SFTP服务器不同, FTP服务器默认是不安全的。要在 TLS 模式下运行,您需要通过以下方式提供证书


--ftp="tls-private-key=path/to/private.key" --ftp="tls-public-cert=path/to/public.crt"


注意:如果 MinIO 分布式设置已配置为在 TLS 下运行, FTP将自动使用服务器证书链中的相关证书,这主要是为了增加设置的简单性。但是,如果您希望通过FTP服务器的不同域终止 TLS 证书,您可以选择上述命令行选项。

局限性

我们之前注意到 Append 和 Rename 不是支持功能。


鉴于FTP的简单性,版本控制也存在问题。 FTP不支持版本控制,并且FTP客户端不知道它实际上是什么 - 但存储桶通常会有一个对象的多个版本。结果,具有新名称的同一对象将成为一个新对象。具有相同名称的相同对象将是一个新版本 - 但FTP没有这个概念,它需要通过 S3 进行管理。它可以移动数据,但它不具备 S3 那样的复杂性来理解某些概念。


最后,如前所述, FTP上没有可用的管理功能。

概括

FTP/SFTP是寿命特别长的协议,并且在 50 多岁的时间里仍在不断寻找新的用例和实用性。我们使使用FTP将数据传入 MinIO 并将其取出变得简单。


更重要的是, FTP/SFTP功能将与您现有的 MinIO 部署无缝协作 - 只需升级并为您的 MinIO 存储桶提供之前必须转换为 MinIO 的所有数据。


我们这里有一个关于这个主题的精彩视频。我们的 GitHub 页面在这里。我们可以为这里的社区提供支持,显然,如果您是商业客户,您可以在 SUBNET 上找到我们 24/7/365。


也发布在这里