Azure Blob 存储中 SSH 文件传输协议 (SFTP) 支持的限制和已知问题

本文介绍 Azure Blob 存储的 SFTP 支持的限制和已知问题。

重要

由于必须为帐户启用分层命名空间才能使用 SFTP,因此“Azure Data Lake Storage 的已知问题”一文中描述的所有已知问题也适用于您的帐户。

已知不支持的客户端

已知以下客户端与 Azure Blob 存储的 SFTP 不兼容。 有关详细信息,请参阅支持的算法

  • Kemp
  • paramiko 1.16.0
  • SSH.NET 2016.1.0

此列表并不详尽,可能会随着时间的推移而变化。

客户端设置

若要通过 SFTP 客户端向/从 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 请求将会失败。
    多协议写入 不允许在使用 SFTP 创建的 blob 上从其他协议(NFS、Blob REST、Data Lake Storage REST)进行随机写入和追加(PutBlockPutBlockListGetBlockListAppendBlockAppendFile)。 允许完全覆盖。
    重命名操作 在目标文件名已存在的情况下的重命名操作将违反协议。 尝试此类操作会返回错误。 有关详细信息,请参阅删除和重命名文件
    跨容器操作 不支持通过同一连接在容器之间进行遍历或对多个容器执行操作。
    未删除 无法通过 SFTP 还原软删除的 Blob。 必须使用 Undelete REST API。

    身份验证和授权

    • 本地用户是 SFTP 终结点当前支持的唯一一种标识管理形式。

    • SFTP 终结点不支持 Microsoft Entra ID。

    若要了解详细信息,请参阅 SFTP 权限模型Azure Data Lake Storage 中的访问控制模型

    网络

    • 若要使用 SFTP 访问存储帐户,网络必须允许端口 22 上的流量。

    • 存储帐户不支持静态 IP 地址。 这不是特定于 SFTP 的限制。

    • 空闲或非活动连接的超时时间为 2 分钟。 OpenSSH 将看似停止响应,然后断开连接。 某些客户端会自动重新连接。

    其他

    • 有关性能问题和注意事项,请参阅 Azure Blob 存储中的 SSH 文件传输协议 (SFTP) 性能注意事项

    • 默认情况下,使用 SFTP 上传的 Blob 的 Content-MD5 属性设置为 null。 因此,如果你希望这些 Blob 的 Content-MD5 属性包含 MD5 哈希,则客户端必须计算该值,然后在上传 Blob 之前设置 Blob 的 Content-MD5 属性。

    • 通过 SFTP 终结点上传的最大文件大小为 500 GB。

    • 若要更改存储帐户的冗余/复制设置,必须禁用 SFTP。 转换完成后,可以重新启用 SFTP。

    • 无法通过 SFTP 终结点访问 $logs、$blobchangefeed、$root、$web 等特殊容器。

    • 不支持符号链接。

    • 不支持不是 SFTP 的 SSH 和 SCP 命令。

    • 不支持 FTPS 和 FTP。

    • TLS 和 SSL 与 SFTP 无关。

    • 仅支持 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 error. 错误,请检查:

      • 是否为用户分配了对容器的适当权限。

      • 在连接字符串中为没有主目录的本地用户指定容器名称。

      • 在连接字符串中为其主目录不存在的本地用户指定容器名称。

    • 若要在连接时解析 Received disconnect from XX.XXX.XX.XXX port 22:11:,请检查以下内容:

      • 公用网络访问权限为 Enabled from all networks 还是 Enabled from selected virtual networks and IP addresses

      • 防火墙允许客户端 IP 地址。

    另请参阅