我不得不使用流行的FTP客户端(例如FileZilla)将安全FTP设置为Azure Blob存储。经过大量的研究,我遇到了一个link说:
代码部署为辅助角色,代码创建一个FTP服务器,可以接受来自所有流行FTP客户端(例如FileZilla)的连接,以便命令和控制blob存储帐户。
按照链接的说明,我已经实现了相同的功能,并在Azure生产环境中部署了辅助角色,并且成功了。但是我仍然无法使用FileZilla连接FTP主机服务器(由我在配置文件中提供)。我不知道我做错了什么或错过了什么。
但为什么?
那里已经有两个非常好的FTP风格的Azure存储客户端: http://storageexplorer.com和http://azurestorageexplorer.codeplex.com
正如@Guarav指出的那样,它们都可以使用Shared Access Signature(SAS)连接到Azure存储而不会暴露帐户密钥。然后,如果您正在构建多租户服务,则可以为每个客户使用不同的SAS - 尽管如果您考虑它 - 这不是一个非常合理的分离边界。
我会为每个客户使用一个单独的存储帐户。这样,如果存储帐户遭到入侵,它只会影响一个客户。以下限制适用:
来自https://azure.microsoft.com/en-us/documentation/articles/storage-scalability-targets/:
Scalability targets for blobs, queues, tables, and files
每个订阅的存储帐户数:200
这包括标准和高级存储帐户。如果您需要超过200个存储帐户,请通过Azure支持提出请求。 Azure存储团队将审核您的业务案例,并可能批准最多250个存储帐户。
如果您可以使用Node.js进行一些编程,则可以托管由Azure Blob直接支持的FTP服务器。
你可以使用nodeftpd和azure-storage-fs。 nodeftpd是用Node.js编写的FTP服务器,支持第三方文件系统管理器。 azure-storage-fs是一个文件系统管理器,旨在用于nodeftpd并直接与Azure Blob对话。
文件系统管理器集成代码清楚地写在README.md的azure-storage-fs下。但是您需要编写自己的身份验证代码。