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)进行随机写入和追加(PutBlock 、PutBlockList 、GetBlockList 、AppendBlock 、AppendFile )。 允许完全覆盖。 |
重命名操作 | 在目标文件名已存在的情况下的重命名操作将违反协议。 尝试此类操作会返回错误。 有关详细信息,请参阅删除和重命名文件。 |
跨容器操作 | 不支持通过同一连接在容器之间进行遍历或对多个容器执行操作。 |
未删除 | 无法通过 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 地址。