文件

檔案傳輸協定 (FTP/SFTP)

MinIO 版本新增功能:RELEASE.2023-04-20T17-56-55Z

概觀

MinIO 伺服器 RELEASE.2023-04-20T17-56-55Z 開始,您可以使用檔案傳輸協定 (FTP) 或 SSH 檔案傳輸協定 (SFTP) 來與 MinIO 部署上的物件互動。

您必須在啟動伺服器時明確啟用 FTP 或 SFTP。啟用任一伺服器類型都不會影響其他 MinIO 功能。

本頁面全文皆使用 FTP 縮寫,但您可以使用以下所述的任何受支援的 FTP 協定。

受支援的協定

啟用後,MinIO 支援透過下列協定進行 FTP 存取

  • SSH 檔案傳輸協定 (SFTP)

    網際網路工程任務組 (IETF) 將 SFTP 定義為 SSH 2.0 的擴充。SFTP 允許透過 SSH 進行檔案傳輸,以便與傳輸層安全性 (TLS)和虛擬私人網路 (VPN) 應用程式搭配使用。

    您的 FTP 用戶端必須支援 SFTP。

  • 透過 SSL/TLS 的檔案傳輸協定 (FTPS)

    FTPS 允許透過標準 FTP 通訊通道使用 TLS 憑證進行加密的 FTP 通訊。FTPS 不應與 SFTP 混淆,因為 FTPS 不會透過安全外殼 (SSH) 進行通訊。

    您的 FTP 用戶端必須支援 FTPS。

  • 檔案傳輸協定 (FTP)

    未加密的檔案傳輸。

    MinIO 建議使用未加密的 FTP 進行檔案傳輸。

MinIO Operator 租用戶僅支援 SFTP

使用 Operator 部署的 MinIO 租用戶僅支援 SFTP。如需詳細資訊,請參閱租用戶的檔案傳輸協定

受支援的命令

啟用後,MinIO 支援下列 FTP 操作

  • get

  • put

  • ls

  • mkdir

  • rmdir

  • delete

MinIO 不支援 appendrename 操作。

考量事項

版本控制

SFTP 用戶端只能對物件的最新版本進行操作。具體而言

  • 對於讀取操作,MinIO 只會將請求物件的最新版本返回給 FTP 用戶端。

  • 對於寫入操作,MinIO 會應用正常的版本控制行為,並在指定的命名空間建立新的物件版本。deletermdir 操作會建立 DeleteMarker 物件。

驗證與存取

FTP 存取需要與任何其他 S3 用戶端相同的驗證。MinIO 支援以下驗證提供者:

STS 憑證無法透過 FTP 存取儲存貯體或物件。

經過驗證的使用者可以根據指派給使用者或父使用者帳戶的政策存取儲存貯體和物件。

FTP 協議不需要任何 admin:* 權限。FTP 協定不支援任何 MinIO 管理動作。

先決條件

  • MinIO RELEASE.2023-04-20T17-56-55Z 或更新版本。

  • 為伺服器啟用 FTP 或 SFTP 連接埠。

  • 一個用於 FTP 命令的連接埠,以及一個連接埠範圍,允許 FTP 伺服器請求用於資料傳輸。

程序

  1. 啟動 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" \
    ...
    

    有關使用這些標記啟動 MinIO 服務的詳細資訊,請參閱 minio server --ftpminio server --sftp。若要使用 TLS (FTPS) 連線到 FTP 連接埠,也請傳遞 tls-private-keytls-public-cert 金鑰和值,除非使用 MinIO 預設的 TLS 金鑰。

    該命令的輸出應傳回類似以下的響應:

    MinIO FTP Server listening on :8021
    MinIO SFTP Server listening on :8022
    
  2. 使用您偏好的 FTP 用戶端連線到 MinIO 部署。您必須以其政策允許存取所需儲存貯體和物件的使用者身分連線。

    連線到 MinIO 部署的具體細節取決於您的 FTP 用戶端。請參閱您的用戶端的文件。

    若要透過 TLS 或 SSH 連線,您必須使用支援所需協定的用戶端。

範例

以下範例在 Linux 系統上使用 FTP CLI 用戶端

使用 FTP 連線到 MinIO

以下範例使用 minio 憑證連線到伺服器,以列出名為 runner 的儲存貯體的內容。

> ftp localhost -P 8021
Connected to localhost.
220 Welcome to MinIO FTP Server
Name (localhost:user): minio
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/
...

啟動已啟用 TLS (FTPS) 的 FTP 的 MinIO

以下範例啟動已啟用 FTPS 的 MinIO。

minio server http://server{1...4}/disk{1...4} \
--ftp="address=:8021"                         \
--ftp="passive-port-range=30000-40000"        \
--ftp="tls-private-key=path/to/private.key"   \
--ftp="tls-public-cert=path/to/public.crt"    \
...

注意

省略 tls-private-keytls-public-cert 以使用 MinIO 預設的 TLS 金鑰進行 FTPS。如需更多資訊,請參閱 MinIO 文件中的 TLS

透過 FTP 下載物件

此範例列出儲存貯體中的項目,然後下載儲存貯體的內容。

> ftp localhost -P 8021
Connected to localhost.
220 Welcome to MinIO FTP Server
Name (localhost:user): minio
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/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 連線到 MinIO

以下範例連線到 SFTP 伺服器,列出名為 runner 的儲存貯體的內容,並下載物件。

> sftp -P 8022 minio@localhost
minio@localhost's password:
Connected to localhost.
sftp> ls runner/
chunkdocs  testdir
sftp> get runner/chunkdocs/metadata metadata
Fetching /runner/chunkdocs/metadata to metadata
metadata                               100%  226    16.6KB/s   00:00

使用憑證金鑰檔案透過 SFTP 連線到 MinIO

RELEASE.2024-05-07T06-41-25Z 版本新增。

MinIO 支援 SFTP 上的相互 TLS (mTLS) 憑證式驗證,其中伺服器和用戶端都會驗證彼此的真實性。

這種驗證類型需要以下各項:

  1. 信任憑證授權單位的公開金鑰檔案

  2. 由信任憑證授權單位鑄造和簽署的 MinIO 伺服器公開金鑰檔案

  3. 由信任憑證授權單位鑄造和簽署的使用者公開金鑰檔案,用於透過 SFTP 連線的用戶端,並且位於使用者的 .ssh 資料夾中(或作業系統的等效位置)

金鑰必須包含可使用該金鑰進行驗證的使用者的主體清單

ssh-keygen -s ~/.ssh/ca_user_key -I miniouser -n miniouser -V +1h -z 1 miniouser1.pub
  • -s 指定用於產生此金鑰的憑證授權單位公開金鑰的路徑。指定的公開金鑰必須具有包含此使用者的 principals 清單。

  • -I 指定公開金鑰的金鑰身分。

  • -n 建立此金鑰有效的 user principals 清單。您必須包含此金鑰有效的使用者,並且該使用者必須與 MinIO 中的使用者名稱相符。

  • -V 限制產生金鑰的有效期限。在此範例中,金鑰的有效期限為一小時。請根據您的需求調整期限。

  • -z 為金鑰新增序號,以將此產生的公開金鑰與由相同憑證授權單位公開金鑰簽署的其他金鑰區分開來。

MinIO 需要指定用於簽署 SFTP 存取憑證的憑證授權單位。啟動或重新啟動 MinIO 伺服器,並使用 --sftp="trusted-user-ca-key=PATH" 標記,指定信任憑證授權單位公開金鑰的路徑。

minio server {path-to-server} --sftp="trusted-user-ca-key=/path/to/.ssh/ca_user_key.pub" {...other flags}

透過 SFTP 連線到 MinIO 伺服器時,用戶端會驗證 MinIO 伺服器的憑證。然後,用戶端將自己的憑證傳遞給 MinIO 伺服器。MinIO 伺服器會透過將金鑰的值與伺服器啟動時提供的憑證授權單位已知的公開金鑰進行比較,來驗證上述建立的金鑰。

一旦 MinIO 伺服器驗證了用戶端的憑證,使用者就可以透過 SFTP 連線到 MinIO 伺服器

sftp -P <SFTP port> <server IP>

需要服務帳戶或 LDAP 進行驗證

若要強制使用 LDAP 或服務帳戶憑證進行 SFTP 驗證,請在使用者名稱後面附加尾碼。有效的尾碼為 =ldap=svc

> sftp -P 8022 my-ldap-user=ldap@[minio@localhost]:/bucket
> sftp -P 8022 my-ldap-user=svc@[minio@localhost]:/bucket
  • my-ldap-user 替換為要使用的使用者名稱。

  • [minio@localhost] 替換為 MinIO 伺服器的位址。