本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用用戶端透過伺服器端點傳輸檔案
您可以在用戶端中指定傳輸操作,以透過 AWS Transfer Family 服務傳輸檔案。 AWS Transfer Family 支援下列用戶端:
-
我們支援 SFTP 通訊協定的第 3 版。
-
OpenSSH (macOS 和 Linux)
注意
此用戶端僅適用於啟用 Secure Shell (SSH) 檔案傳輸通訊協定 (SFTP) 的伺服器。
-
WinSCP (僅限 Microsoft Windows)
-
Cyberduck (Windows、macOS 和 Linux)
-
FileZilla (Windows、macOS 和 Linux)
下列限制適用於每個用戶端:
-
不支援 SCP 通訊協定,因為它被視為不安全。您可以使用 OpenSSH
scp命令,如中所述使用 scp命令。 -
每個連線的並行多工 SFTP 工作階段數目上限為 10。
-
對於閒置連線,所有通訊協定 (SFTP/FTP/FTPS) 的逾時值為 1800 秒 (30 分鐘)。如果在此期間之後沒有活動,用戶端可能會中斷連線。對於沒有回應的連線:
-
當用戶端完全沒有回應時,SFTP 會有 300 秒 (5 分鐘) 的逾時。
-
FTPS 和 FTP 大約有 10 分鐘的無回應逾時,由基礎程式庫處理。
-
-
Amazon S3 和 Amazon EFS (由於 NFSv4 通訊協定) 需要檔案名稱為 UTF-8 編碼。使用不同的編碼可能會導致非預期的結果。對於 Amazon S3,請參閱物件金鑰命名準則。
-
對於透過 SSL (FTPS) 的檔案傳輸通訊協定,僅支援明確模式。不支援隱含模式。
-
對於檔案傳輸通訊協定 (FTP) 和 FTPS,僅支援被動模式。
-
對於 FTP 和 FTPS,僅支援 STREAM 模式。
-
對於 FTP 和 FTPS,僅支援映像/二進位模式。
-
對於 FTP 和 FTPS,資料連線的 TLS - PROT C (未受保護) TLS 是預設值,但 AWS Transfer Family FTPS 通訊協定不支援 PROT C。因此,對於 FTPS,您需要發出 PROT P 才能接受您的資料操作。
-
如果您使用 Amazon S3 做為伺服器的儲存體,而且您的用戶端包含使用多個連線進行單一傳輸的選項,請務必停用該選項。否則,大型檔案上傳可能會以無法預測的方式失敗。請注意,如果您使用 Amazon EFS 做為儲存後端,EFS 會支援單一傳輸的多個連線。
以下是 FTP 和 FTPS 的可用命令清單:
| 可用命令 | |||||
|---|---|---|---|---|---|
ABOR |
FEAT |
MLST |
PASS |
RETR |
STOR |
AUTH |
LANG |
MKD |
PASV |
RMD |
STOU |
CDUP |
LIST |
MODE |
PBSZ |
RNFR |
STRU |
CWD |
MDTM |
NLST |
PROT |
RNTO |
SYST |
刪除 |
MFMT |
NOOP |
PWD |
SIZE |
TYPE |
EPSV |
MLSD |
OPTS |
結束 |
STAT |
USER |
注意
不支援 APPE。
對於 SFTP,在使用 Amazon Elastic File System (Amazon EFS) 的伺服器上使用邏輯主目錄的使用者目前不支援下列操作。
| 不支援的 SFTP 命令 | |||
|---|---|---|---|
SSH_FXP_READLINK |
SSH_FXP_SYMLINK |
當請求的檔案為符號連結時,SSH_FXP_STAT |
當請求的路徑包含任何符號連結元件時,SSH_FXP_REALPATH |
產生公有/私有金鑰對
您必須先有公有/私有金鑰對可用,才能傳輸檔案。如果您先前尚未產生金鑰對,請參閱 為服務受管使用者產生 SSH 金鑰。
主題
可用的 SFTP/FTPS/FTP 命令
下表說明 SFTP AWS Transfer Family、FTPS 和 FTP 通訊協定的可用命令。
注意
資料表提及 Amazon S3 的檔案和目錄,僅支援儲存貯體和物件:沒有階層。不過,您可以在物件金鑰名稱中使用字首來暗示階層,並以類似資料夾的方式整理資料。此行為說明於《Amazon Simple Storage Service 使用者指南》中的使用物件中繼資料。
| 命令 | Amazon S3 | Amazon EFS |
|---|---|---|
cd |
支援 | 支援 |
chgrp |
不支援 | 支援 (rootowner僅限 或 ) |
chmod |
不支援 | 支援 (root僅限 ) |
chmtime |
不支援 | 支援 |
chown |
不支援 | 支援 (root僅限 ) |
get |
支援 | 支援 (包括解析符號連結) |
ln -s |
不支援 | 支援 |
ls/dir |
支援 | 支援 |
mkdir |
支援 | 支援 |
put |
支援 | 支援 |
pwd |
支援 | 支援 |
rename |
僅支援 檔案 注意不支援覆寫現有檔案的重新命名。 |
支援 注意不支援覆寫現有檔案或目錄的重新命名。 |
rm |
支援 | 支援 |
rmdir |
支援 (僅限空白目錄) | 支援 |
version |
支援 | 支援 |
尋找您的 Amazon VPC 端點
如果 Transfer Family 伺服器的端點類型為 VPC,則識別用於傳輸檔案的端點並不簡單。在此情況下,請使用下列程序來尋找您的 Amazon VPC 端點。
尋找 Amazon VPC 端點
-
導覽至伺服器的詳細資訊頁面。
-
在端點詳細資訊窗格中,選取 VPC。
-
在 Amazon VPC 儀表板中,選取 VPC 端點 ID。
-
在 DNS 名稱清單中,您的伺服器端點是列出的第一個端點。
避免setstat錯誤
有些 SFTP 檔案傳輸用戶端可以在上傳檔案時使用 SETSTAT 等命令,嘗試變更遠端檔案的屬性,包括時間戳記和許可。不過,這些命令與 Amazon S3 等物件儲存系統並不相容。由於這種不相容性,即使已成功上傳檔案,從這些用戶端上傳檔案也可能導致錯誤。
-
當您呼叫
CreateServer或UpdateServerAPI 時,請使用ProtocolDetails選項SetStatOption來忽略當用戶端嘗試在您上傳至 S3 儲存貯體的檔案上使用 SETSTAT 時所產生的錯誤。 -
將值設定為
ENABLE_NO_OP,讓 Transfer 系列伺服器忽略 SETSTAT 命令,並上傳檔案,而不需要對 SFTP 用戶端進行任何變更。 -
請注意,雖然
SetStatOptionENABLE_NO_OP設定忽略錯誤,但會在 CloudWatch Logs 中產生日誌項目,因此您可以判斷用戶端何時進行 SETSTAT 呼叫。
如需此選項的 API 詳細資訊,請參閱 ProtocolDetails。
使用 OpenSSH
本節包含使用 OpenSSH 從命令列傳輸檔案的說明。
注意
此用戶端僅適用於啟用 SFTP 的伺服器。
使用 OpenSSH
AWS Transfer Family 使用 OpenSSH 命令列公用程式傳輸檔案
-
在 Linux、macOS 或 Windows 上,開啟命令終端機。
-
在提示中,輸入下列命令:
sftp -itransfer-keysftp_user@service_endpoint在上述命令中,
是使用者名稱,而sftp_user是 SSH 私有金鑰。此處transfer-key是伺服器端點,如所選伺服器的 AWS Transfer Family 主控台所示。service_endpoint注意
此命令使用預設
ssh_config檔案中的設定。除非您先前已編輯過此檔案,否則 SFTP 會使用連接埠 22。您可以將-P旗標新增至命令來指定不同的連接埠 (例如 2222),如下所示。sftp -P 2222 -itransfer-keysftp_user@service_endpoint或者,如果您一律想要使用連接埠 2222 或連接埠 22000,您可以更新
ssh_config檔案中的預設連接埠。應會出現
sftp提示。 -
(選用) 若要檢視使用者的主目錄,請在
sftp提示中輸入下列命令:pwd -
若要將檔案從檔案系統上傳至 Transfer Family 伺服器,請使用
put命令。例如,若要上傳hello.txt(假設檔案位於檔案系統的目前目錄中),請在sftp提示下執行下列命令:put hello.txt隨即出現類似下列的訊息,指出檔案傳輸正在進行中或已完成。
Uploading hello.txt to /amzn-s3-demo-bucket/home/sftp_user/hello.txthello.txt 100% 127 0.1KB/s 00:00
注意
建立伺服器之後,可能需要幾分鐘的時間,伺服器端點主機名稱才能由環境中的 DNS 服務解析。
使用 scp命令
Transfer Family 不支援 SCP 通訊協定。不過,如果您需要此功能,您可以使用 OpenSSH scp命令。
透過 SFTP 使用 SCP 的建議是使用 OpenSSH 9.0 版或更新版本。在 OpenSSH 第 9 版及更新版本中,scp命令預設為使用 SFTP 通訊協定進行檔案傳輸,而非舊版 SCP 通訊協定。
重要
確保您的 Transfer Family 伺服器已設定為使用 S3 最佳化目錄存取。
使用 WinSCP
使用下列說明使用 WinSCP 從命令列傳輸檔案。
注意
如果您使用的是 WinSCP 5.19,則可以使用登入 AWS 資料直接連線至 Amazon S3,並上傳/下載檔案。如需詳細資訊,請參閱連線至 Amazon S3 服務
AWS Transfer Family 使用 WinSCP 傳輸檔案
-
開啟 WinSCP 用戶端。
-
在登入對話方塊中,針對檔案通訊協定選擇通訊協定:SFTP 或 FTP。
如果您選擇 FTP,請針對加密選擇下列其中一項:
-
FTP 無加密
-
FTPS 的 TLS/SSL 明確加密
-
-
針對 Host name (主機名稱),輸入您的伺服器端點。伺服器端點位於伺服器詳細資訊頁面上。如需詳細資訊,請參閱檢視 SFTP、FTPS 和 FTP 伺服器詳細資訊。
如果您的伺服器使用 VPC 端點,請參閱 尋找您的 Amazon VPC 端點。
-
針對連接埠號碼,輸入下列項目:
-
22適用於 SFTP -
21適用於 FTP/FTPS
-
-
針對使用者名稱,輸入您為特定身分提供者建立的使用者名稱。
秘訣:使用者名稱應該是您為身分提供者建立或設定的使用者之一。 AWS Transfer Family 提供下列身分提供者:
-
選擇進階以開啟進階網站設定對話方塊。在 SSH 區段中,選擇身分驗證。
-
對於私有金鑰檔案,請瀏覽 ,然後從檔案系統選擇 SSH 私有金鑰檔案。
如果 WinSCP 提供將 SSH 私有金鑰轉換為 PPK 格式,請選擇確定。
-
選擇 OK (確定) 返回 Login (登入) 對話方塊,然後選擇 Save (儲存)。
-
在將工作階段儲存為網站對話方塊中,選擇確定以完成連線設定。
-
在登入對話方塊中,選擇工具,然後選擇偏好設定。
-
在偏好設定對話方塊中,針對轉接,選擇耐久度。
針對啟用傳輸繼續/傳輸到暫時檔案名稱的選項,選擇停用。
重要
如果您啟用此選項,會增加上傳成本,大幅降低上傳效能。它也可能導致大型檔案上傳失敗。
-
針對轉接,選擇背景,然後清除針對單一轉接使用多個連線核取方塊。
秘訣:如果您選取此選項,大型檔案上傳可能會以無法預測的方式失敗。例如,可以建立產生 Amazon S3 費用的孤立分段上傳。也可能發生靜音資料損毀。
-
執行檔案傳輸。
您可以使用drag-and-drop方法來複製目標和來源視窗之間的檔案。您可以使用工具列圖示來上傳、下載、刪除、編輯或修改 WinSCP 中檔案的屬性。
注意
如果您使用 Amazon EFS 進行儲存,則不適用此備註。
嘗試變更遠端檔案屬性的命令,包括時間戳記,與 Amazon S3 等物件儲存系統不相容。因此,如果您使用 Amazon S3 進行儲存,請務必先停用 WinSCP 時間戳記設定 (或使用 SetStatOption中所述的 避免setstat錯誤),再執行檔案傳輸。若要這樣做,請在 WinSCP Transfer 設定對話方塊中停用設定許可上傳選項和保留時間戳記常用選項。
使用 Cyberduck
使用下列說明使用 Cyberduck 從命令列傳輸檔案。
AWS Transfer Family 使用 Cyberduck 傳輸檔案
-
開啟 Cyberduck
用戶端。 -
選擇開啟連線。
-
在開啟連線對話方塊中,選擇通訊協定:SFTP (SSH 檔案傳輸通訊協定)、FTP-SSL (明確 AUTH TLS) 或 FTP (檔案傳輸通訊協定)。
-
在伺服器中,輸入您的伺服器端點。伺服器端點位於伺服器詳細資訊頁面上。如需詳細資訊,請參閱檢視 SFTP、FTPS 和 FTP 伺服器詳細資訊。
如果您的伺服器使用 VPC 端點,請參閱 尋找您的 Amazon VPC 端點。
-
針對連接埠號碼,輸入下列項目:
-
22適用於 SFTP -
21適用於 FTP/FTPS
-
-
針對 Username (使用者名稱),輸入您在管理伺服器端點的使用者中建立的使用者名稱。
-
如果選取 SFTP,請針對 SSH 私有金鑰選擇或輸入 SSH 私有金鑰。
-
選擇連線。
-
執行檔案傳輸。
根據檔案所在位置,執行以下其中一項:
-
在本機目錄 (來源) 中,選擇您要傳輸的檔案,然後將它們拖放到 Amazon S3 目錄 (目標)。
-
在 Amazon S3 目錄 (來源) 中,選擇您要傳輸的檔案,然後將它們拖放到您的本機目錄 (目標)。
-
使用 FileZilla
使用下列指示來使用 FileZilla 傳輸檔案。
設定檔案傳輸的 FileZilla
-
開啟 FileZilla 用戶端。
-
選擇檔案,然後選擇 Site Manager。
-
在 Site Manager 對話方塊中,選擇新增網站。
-
在一般索引標籤上,針對通訊協定,選擇通訊協定:SFTP 或 FTP。
如果您選擇 FTP,請針對加密選擇下列其中一項:
-
僅使用純 FTP (不安全) – 適用於 FTP
-
如果可用,透過 TLS 使用明確的 FTP – 適用於 FTPS
-
-
針對主機名稱,輸入您正在使用的通訊協定,後面接著伺服器端點。伺服器端點位於伺服器詳細資訊頁面上。如需詳細資訊,請參閱檢視 SFTP、FTPS 和 FTP 伺服器詳細資訊。
-
如果您使用的是 SFTP,請輸入:
sftp://hostname -
如果您使用的是 FTPS,請輸入:
ftps://hostname
請務必將
主機名稱取代為實際的伺服器端點。如果您的伺服器使用 VPC 端點,請參閱 尋找您的 Amazon VPC 端點。
-
-
針對連接埠號碼,輸入下列內容:
-
22適用於 SFTP -
21適用於 FTP/FTPS
-
-
如果選取 SFTP,請針對登入類型選擇金鑰檔案。
針對金鑰檔案,選擇或輸入 SSH 私有金鑰。
-
針對使用者,輸入您在 中建立的使用者名稱管理伺服器端點的使用者。
-
選擇連線。
-
執行檔案傳輸。
注意
如果您中斷進行中的檔案傳輸, AWS Transfer Family 可能會在 Amazon S3 儲存貯體中寫入部分物件。如果您中斷上傳,請檢查 Amazon S3 儲存貯體中的檔案大小是否符合來源物件的檔案大小,然後再繼續。
使用 Perl 用戶端
如果您使用 NET::SFTP::Foreign perl 用戶端,您必須將 queue_size 設定為 1。例如:
my $sftp =
Net::SFTP::Foreign->new('user@s-12345.server.transfer.us-east-2.amazonaws.com',
queue_size => 1);
注意
1.92.02Net::SFTP::Foreign之前的 修訂需要此解決方法。
使用 LFTP
LFTP 是免費的 FTP 用戶端,可讓使用者透過大多數 Linux 機器的命令列界面執行檔案傳輸。
對於大型檔案下載,LFTP 有已知的封包順序錯誤問題,導致檔案傳輸失敗。
上傳後處理
您可以檢視上傳後處理資訊,包括 Amazon S3 物件中繼資料和事件通知。
Amazon S3 物件中繼資料
在物件中繼資料中,您會看到名為 的金鑰,x-amz-meta-user-agent其值為 AWSTransfer,x-amz-meta-user-agent-id而其值為 username@server-id。username 是上傳檔案的 Transfer Family 使用者,server-id也是用於上傳的伺服器。您可以使用 Lambda 函數內 S3 物件上的 HeadObject 操作來存取此資訊。
Amazon S3 事件通知
使用 Transfer Family 將物件上傳至 S3 儲存貯體時, RoleSessionName 會包含在 S3 事件通知結構中的請求者欄位中,做為 [AWS:Role Unique Identifier]/username.sessionid@server-id。例如,下列是已複製到 S3 儲存貯體之檔案的 S3 存取日誌中範例請求者欄位的內容。 S3
arn:aws:sts::AWS-Account-ID:assumed-role/IamRoleName/username.sessionid@server-id
在上方的申請者欄位中,會顯示名為 的 IAM 角色IamRoleName。如需設定 S3 事件通知的詳細資訊,請參閱《Amazon Simple Storage Service 開發人員指南》中的設定 Amazon S3 事件通知。 如需 AWS Identity and Access Management (IAM) 角色唯一識別符的詳細資訊,請參閱AWS Identity and Access Management 《 使用者指南》中的唯一識別符。
SFTP 訊息
本節說明使用 Transfer Family 伺服器時,您在 SFTP 檔案傳輸期間或之後可能收到的用戶端訊息。如需任何 SFTP 事件的詳細資訊,請檢查您的 SFTP 用戶端日誌。您可以使用該資訊來疑難排解任何錯誤,或將該資訊轉送給您的網路團隊,讓他們協助識別問題。
| 活動 | 描述 |
|---|---|
| AUTH_FAILURE | 使用者身分驗證失敗。這可以是自訂身分提供者或服務受管使用者的任何失敗類型。事件中的詳細資訊有助於釐清失敗的根本原因。 |
| CLOSE | 表示已開啟的檔案或目錄已成功關閉。 |
| CONNECTED/DISCONNECTED | 表示正常連線成功和中斷連線。 |
| CREATE_SYMLINK | 已建立符號連結 (成功或失敗)。 |
| DELETE | 檔案已刪除 (成功或失敗)。 |
| ERROR | 一般、非預期的錯誤。相關聯的描述包含的資訊可協助您或您的網路管理員識別特定問題。 |
| EXIT_REASON | 當意外錯誤導致 SFTP 工作階段終止時發出。與事件相關聯的訊息說明原因。 |
| MKDIR | 目錄已建立 (成功或失敗)。 |
| OPEN | 檔案已開啟進行讀取或寫入 (成功或失敗) |
| PARTIAL_CLOSE | 當檔案仍然開啟且未收到 CLOSE 訊息時,用戶端會中斷與伺服器的連線。Transfer Family 會儲存檔案的接收部分 (實際上可能是完整的檔案),並發出 PARTIAL_CLOSE 事件,以提醒客戶發生此問題。工作流程整合也會收到onPartialClose事件,以適當處理檔案。 |
| RENAME | 檔案已重新命名 (成功或失敗) |
| RMDIR | 目錄已刪除 (成功或失敗) |
| SETSTAT |
檔案的屬性會變更 (成功或失敗)。 注意如果您使用 Amazon S3 進行儲存,Transfer Family 不支援 SETSTAT。避免setstat錯誤 本節提供如何透過關閉 設定來避免 |
| TLS_RESUME_FAILURE | 伺服器設定為強制執行 TLS 工作階段恢復,且用戶端不支援它。 |