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 存储传输文件,请参阅以下建议的设置。

  • 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。

    访问控制列表和默认控制列表(ACL)

    • SFTP 目前不支持默认 ACL 或其他访问 ACL(POSIX user::group::以外的 ACL 条目,以及other::命名用户或命名组等条目)。

    • 如果访问路径中的任何目录(包括用户的主目录)设置了默认 ACL 或额外的访问 ACL,即使发起连接的用户拥有所需的权限,SFTP 操作也会因 Permission denied 而失败。

    解决 方案:从 SFTP 访问路径(包括用户的主目录)中删除默认 ACL 和其他访问 ACL,以便仅保留 POSIX user::group::other::条目。

    有关 ACL 以及如何编辑 ACL 的更多详细信息,请参阅访问控制列表(ACL)。

    网络

    • 要通过SFTP访问存储账户,你的网络必须允许22端口的流量。

    • 存储账户不支持静态IP地址。 这个限制并不只限于SFTP。

    • 空闲或非激活连接在两分钟后超时。 OpenSSH 停止响应,然后断开连接。 某些客户端会自动重新连接。

    SFTP的额外限制

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

    • 默认情况下,使用 SFTP 上传的 blob 的 Content-MD5 属性为空。 要用MD5哈希填充该属性,客户端必须计算哈希值并在上传blob前设置Content-MD5属性。

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

    • 标准常规用途 v2 帐户支持由客户管理的计划故障转移。 有关详细信息,请参阅 Azure 存储灾难恢复计划和故障转移

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

    • 你无法通过 SFTP 终结点访问特殊容器,例如 $logs$root$blobchangefeed$web

    • 不支持 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或高级块块账户。

      • 该账户已启用分层命名空间。

    • 若要解决 Home Directory not accessible 错误,请检查:

      • 用户对容器拥有适当的权限。

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

      • 连接字符串 指定了本地用户的容器名称,而这些用户的主目录不存在。

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

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

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

    另请参阅