本文介绍如何使用 SFTP 客户端安全连接到 Azure 存储帐户的 Blob 存储终结点。 连接后,可以上传和下载文件,以及修改文件和文件夹的访问控制列表 (ACL)。
若要详细了解 Azure Blob 存储中的 SFTP 支持,请参阅 Azure Blob 存储中的 SSH 文件传输协议 (SFTP)。
先决条件
启用 Azure Blob 存储的 SFTP 支持。 请参阅启用或禁用 SFTP 支持。
向 SFTP 客户端授予访问权限。 请参阅向客户端授予访问权限。
如果要从本地网络连接,请确保客户端允许通过 SFTP 使用的端口 22 进行传出通信。
连接 SFTP 客户端
可以使用任何 SFTP 客户端安全进行连接,然后传输文件。 以下示例演示了一个使用 Open SSH 的 Windows PowerShell 会话。
PS C:\Users\temp> sftp contoso4.contosouser@contoso4.blob.core.chinacloudapi.cn
SFTP 用户名为 storage_account_name.username。 在前面的例子中,是 storage_account_name “contoso4”,是 username “contosouser”。合并的用户名变成了“contoso4.contosouser”。 blob 服务终结点为“contoso4.blob.core.chinacloudapi.cn”。
若要完成连接,可能必须响应一个或多个提示。 例如,如果你为本地用户配置了密码认证,系统会提示你输入该密码。 系统还可能会提示你信任主机密钥。 有效主机密钥在此处发布。
注意
SFTP 通过Blob 存储终结点(blob.core.chinacloudapi.cn)而不是Data Lake Storage终结点(dfs.core.chinacloudapi.cn)运行。 因此,数据湖存储终结点(例如 contoso4.contosouser@contoso4.dfs.core.chinacloudapi.cn)不受支持。
使用自定义域进行连接
要通过自定义域连接到 blob 服务端点,请使用 连接字符串 myaccount.myuser@customdomain.com。 如果你没有指定用户的主目录,可以使用 连接字符串 myaccount.mycontainer.myuser@customdomain.com。
重要
确保你的DNS提供商没有代理请求,因为这样做可能会导致连接尝试超时。
若要了解如何将自定义域映射到 Blob 服务终结点,请参阅将自定义域映射到 Azure Blob 存储终结点。
使用专用终结点进行连接
要通过私有端点连接到 blob 服务端点,请使用 连接字符串 myaccount.myuser@myaccount.privatelink.blob.core.chinacloudapi.cn。 如果你没有指定用户的主目录,可以使用 myaccount.mycontainer.myuser@myaccount.privatelink.blob.core.chinacloudapi.cn。
注意
确保你 将网络配置从所选虚拟网络和IP地址中切换为启用,然后选择你的私有端点。 否则,blob服务端点仍可公开访问。
传输数据
连接后,可以上传和下载文件。 以下示例使用活动的 Open SSH 会话上传名为 logfile.txt 的文件。
sftp> put logfile.txt
Uploading logfile.txt to /mydirectory/logfile.txt
logfile.txt
100% 19 0.2kb/S 00.00
传输完成后,可以在 Azure 门户中查看和管理该文件。
注意
Azure 门户使用 Blob REST API 和 Data Lake Storage REST API。 能够在 Azure 门户中与上传的文件进行交互体现了 SFTP 和 REST 之间的互操作性。
有关如何进行连接和传输文件的指导,请参阅 SFTP 客户端的文档。
上传简历
Azure Blob 存储 SFTP 的可恢复上传功能现已正式发布。 此功能允许您在部分传输失败时从故障点恢复文件上传,从而节省时间并减少网络带宽使用。 Azure Blob 存储 SFTP 支持以下 SFTP 传输模式:
- 写入:此模式允许客户端继续上传,方法是将数据从特定点添加到现有文件,而无需创建新文件。
- 写入 + 创建:此模式允许客户端通过添加到现有文件或创建新文件(如果不存在)来恢复上传,从而在文件最初可能不存在时提供灵活性。
- 追加:此模式将数据添加到现有文件的末尾,而不会覆盖其当前内容。 此前,该功能仅支持预览时的附加模式,限制了缺乏附加模式支持的 SFTP 客户端的上传恢复。 随着全面发布,Azure Blob 存储 SFTP 现在支持写入和写入 + 创建模式,这对使用 SFTP 客户端且没有附加模式的用户更有利。
注意
仅支持对使用 SFTP 协议创建的 Blob 进行可恢复上传。 对于使用 SFTP 以外的协议(例如 REST)创建的现有 Blob,无法恢复上传。
修改文件或目录的 ACL
可以使用 SFTP 客户端修改 ACL 的拥有用户、拥有组以及所有其他用户的权限级别。 您还可以更改所属用户和所属组。 若要详细了解 SFTP 客户端的 ACL 支持,请参阅 ACL。
注意
拥有者现在还可以修改 blob 或目录的所属组和权限,而无需容器权限。 该功能增强是在本地用户ACL全面可用阶段添加的。 对于非拥有用户的用户,容器权限仍然是必需的。
修改权限
若要更改 ACL 的拥有用户、拥有组或所有其他用户的权限级别,本地用户必须具有 Modify Permission 权限。 请参阅授予对容器的权限。
以下示例将目录的 ACL 输出到控制台。 然后它使用 chmod 命令将ACL 777设置为 。 每个 7 都是 rwx(读取、写入和执行)的数字表示形式。 因此,777 向拥有用户、拥有组和所有其他用户授予读取、写入和执行权限。 然后,此示例将更新的 ACL 输出到控制台。 若要详细了解 ACL 的数字和短格式,请参阅权限的短格式。
sftp> ls -l
drwxr-x--- 1234 5678 0 Mon, 08 Jan 2024 16:53:25 GMT dir1
drwxr-x--- 0 0 0 Mon, 16 Oct 2023 12:18:08 GMT dir2
sftp> chmod 777 dir1
Changing mode on /dir1
sftp> ls -l
drwxrwxrwx 1234 5678 0 Mon, 08 Jan 2024 16:54:06 GMT dir1
drwxr-x--- 0 0 0 Mon, 16 Oct 2023 12:18:08 GMT dir2
注意
目前还不支持添加或修改命名用户、命名组和命名安全主体的 ACL 条目。
更改所有者用户
若要更改目录或 Blob 的拥有用户,本地用户必须具有 Modify Ownership 权限。 请参阅授予对容器的权限。
以下示例将目录的 ACL 输出到控制台。 所属用户的 ID 为 0。 此示例使用 chown 命令将拥有用户的 ID 设置为 1234,并将更改输出到控制台。
sftp> ls -l
drwxr-x--- 0 0 0 Mon, 08 Jan 2024 16:00:12 GMT dir1
drwxr-x--- 0 0 0 Mon, 16 Oct 2023 12:18:08 GMT dir2
sftp> chown 1234 dir1
Changing owner on /dir1
sftp> ls -l
drwxr-x--- 1234 0 0 Mon, 08 Jan 2024 16:52:52 GMT dir1
drwxr-x--- 0 0 0 Mon, 16 Oct 2023 12:18:08 GMT dir2
sftp>
更改所有者组
若要更改目录或 Blob 的拥有组,本地用户必须具有 Modify Ownership 权限。 请参阅授予对容器的权限。
以下示例将目录的 ACL 输出到控制台。 所属组的 ID 是 0。 此示例使用 chgrp 命令将拥有组的 ID 设置为 5678,并将更改输出到控制台。
sftp> ls -l
drwxr-x--- 1234 0 0 Mon, 08 Jan 2024 16:52:52 GMT dir1
drwxr-x--- 0 0 0 Mon, 16 Oct 2023 12:18:08 GMT dir2
sftp> chgrp 5678 dir1
Changing group on /dir1
sftp> ls -l
drwxr-x--- 1234 5678 0 Mon, 08 Jan 2024 16:53:25 GMT dir1
drwxr-x--- 0 0 0 Mon, 16 Oct 2023 12:18:08 GMT dir2