Azure Blob 儲存體中 SSH 檔案傳輸通訊協定 (SFTP) 支援的限制和已知問題

本文說明 Azure Blob 儲存體 中 SFTP 的限制與已知問題,讓您能排查檔案傳輸問題,並驗證用戶端與工作流程的相容性。

重要

由於您必須啟用階層式命名空間才能使用 SFTP,因此 Azure Data Lake Storage 已知問題中的問題也適用於您的帳號。

不支援的用戶端

下列用戶端已知與 Azure Blob 儲存體的 SFTP 不相容。 如需詳細資訊,請參閱支援演算法

  • 坎普
  • 帕拉米科 1.16.0
  • SSH.NET 2016.1.0 或更早版本
  • Renci SSH.NET 2014.6.0

這份清單並不詳盡,而且可能會隨著時間而變更。

用戶端設定

若要透過 SFTP 用戶端將檔案傳輸至 Azure Blob 儲存體或從 Azure Blob 儲存體傳輸檔案,請參閱下列建議的設定。

  • WinSCP

    • 在 偏好設定 對話框中,選擇 「傳輸>耐久度」,然後將「 啟用傳輸恢復/傳輸至臨時檔名 」設為 「停用」。

警告

啟用此選項可能會導致大型檔案上傳期間失敗或效能下降。

不支援的作業

類別 不支援的作業
隨機寫入 同時包含 READ 與 WRITE 旗標的作業。 例如:SSH.NET 建立 API
連結
  • symlink - 建立符號連結
  • ln - 建立永久連結
  • 不支援讀取連結
  • 容量資訊 df - 檔案系統的使用方式資訊
    擴充套件 不支援的延伸模組包括但不限於:fsync@openssh.com、limits@openssh.com、lsetstat@openssh.com、statvfs@openssh.com
    SSH 命令 SFTP 是唯一支援的子系統。 金鑰交換後的 shell 請求失敗。
    多重通訊協定寫入 不允許其他通訊協定 (NFS、Blob REST、Data Lake Storage REST) 對使用 SFTP 所建立的 Blob 進行隨機寫入或附加 (PutBlock、PutBlockList、GetBlockList、AppendBlock、AppendFile)。 允許完整覆寫。
    重新命名作業 目標檔案名已經存在的重新命名作業是通訊協定違規。 嘗試執行這類作業會傳回錯誤。 如需詳細資訊,請參閱移除和重新命名檔案。
    跨容器作業 不支援在容器之間遍歷或從相同的連線中對多個容器執行作業。
    還原 你無法使用 SFTP 還原已軟刪除的 Blob。 使用 Undelete REST API。

    存取 ACL 與預設 ACL

    • 目前,SFTP 不支援 預設 ACL 或額外的 存取 ACL (即除了 POSIX user::、group:: 和 other:: 條目之外的 ACL 條目,如命名的使用者或命名的群組)。

    • 如果存取路徑中的任何目錄(包括使用者的家目錄)已設定預設 ACL 或額外的存取 ACL,即使連線的使用者具有必要權限,SFTP 作業仍會因顯示 Permission denied 而失敗。

    解決方法: 移除 SFTP 存取路徑中所有目錄(包括使用者的家目錄)中的預設 ACL 及額外的存取 ACL,使僅剩 POSIX user::、 group::及 other:: 條目。

    欲了解更多關於 ACL 的細節及編輯方式,請參閱存取控制清單(ACL)。

    網路

    • 要用 SFTP 存取儲存帳號,你的網路必須允許 22 埠的流量。

    • 儲存帳號不支援靜態 IP 位址。 這個限制並不只限於 SFTP。

    • 閒置或非啟用連線會在兩分鐘後超時。 OpenSSH 停止回應,然後斷線。 某些用戶端會自動重新連線。

    SFTP 的其他限制

    • 如需效能問題和考量,請參閱 Azure Blob 儲存體中的 SSH 檔案傳輸通訊協定 (SFTP) 效能考量。

    • 預設情況下,使用 SFTP 上傳的 blob 的 Content-MD5 屬性為空。 要將此屬性填入 MD5 雜湊值,您的客戶端必須先計算雜湊值並在上傳 blob 前設定 Content-MD5 屬性。

    • 透過 SFTP 端點的最大檔案上傳大小為 500 GB。

    • 客戶自主管理的計畫性容錯移轉支援標準一般用途 v2 帳戶,且對進階區塊 Blob 帳戶則以預覽版形式提供支援。 如需詳細資訊,請參閱 Azure 儲存體災害復原規劃與容錯移轉。

    • 要更改儲存帳號的冗餘或複製設定,必須停用 SFTP。 轉換完成後你可以重新啟用 SFTP。

    • 你無法透過 SFTP 端點存取 $blobchangefeed、$root、$web 和 $logs 等特殊容器。

    • 不支援 FTPS 和 FTP。

    • SFTP 不使用 TLS 或 SSL。

    • 僅支援 SSH 第 2 版。

    • 避免使用以點 (.)、正斜線 (/)、反斜線 () 或兩者之序列或組合結尾的 Blob 或目錄名稱。 不應該有路徑段以點 (.) 結尾。 如需詳細資訊,請參閱 命名和參考容器、Blob 及中繼資料。

    Blob 儲存功能

    啟用 SFTP 支援後,部分 Blob 儲存體 功能會被完全支援,但有些功能可能只支援預覽版,甚至尚未支援。

    若要了解如何在已啟用 SFTP 支援的帳戶中支援每項 Blob 儲存體功能,請參閱 Azure 儲存體帳戶中的 Blob 儲存體功能支援。

    疑難排解

    • 要解決此 Failed to update SFTP settings for account 'accountname'. Error: The value 'True' isn't allowed for property isSftpEnabled. 錯誤,請確認儲存帳號符合以下先決條件:

      • 此帳戶為一般用途 v2 或進階區塊 Blob 帳戶。

      • 帳號啟用了階層式命名空間。

    • 若要解決此 Home Directory not accessible 錯誤,請檢查:

      • 使用者對容器擁有適當的權限。

      • 連接字串 指定了沒有 home 目錄的本地使用者容器名稱。

      • 連接字串會指定主目錄不存在之本機使用者的容器名稱。

    • 當連線時,若要解決 Received disconnect from XX.XXX.XX.XXX port 22:11: 的問題,請檢查以下事項:

      • 公用網路存取為 Enabled from all networks 或 Enabled from selected virtual networks and IP addresses。

      • 防火牆允許用戶端 IP 位址。

    另請參閱