43

我需要一些帮助来在我的 Azure VM 实例上设置 FTP。

虚拟机是 Windows Server 2012 R2。我已经设置了 Web 服务器角色并在 IIS 中创建了一个 FTP 站点。我已经确认我可以访问 FTP 服务器

ftp command: open localhost

我还在为标准端口 21 配置的 Azure 门户上为 VM 配置了一个 FTP 端点。

最后,我创建了一个防火墙规则以允许所有流量进出端口 21。

现在,当我尝试从我的家用计算机 FTP 到它时,我可以看到服务器公共 DNS 名称正在解析为正确的 IP 和端口,但无法建立连接。

我在某处缺少配置步骤吗?

谢谢

4

5 回答 5

65

Ronald Wildenberg在 2012 年 7 月的“在 Windows Azure VM 中的IIS 7.5 上托管 FTP ”有一个很棒的演练 。他回应大卫的回答。这些是他经历的阶段:

  1. 首先,你需要一个虚拟机。我需要一台带有 SQL Server 数据库的 Windows 机器,所以我从可用模板中选择了“Microsoft SQL Server 2012 评估版”。
  2. 机器启动后,您可以通过管理门户底部的连接选项进行 RDP 访问。
  3. 当你进入时,你需要配置 IIS。所需步骤的摘要:
    • 将“Web 服务器 (IIS)”角色添加到服务器。
    • 添加您需要的 IIS 功能。
    • 使用公共和专用端口 80 在管理门户中将 TCP 端点添加到您的 VM。
  4. 要启用 FTP,请确保为您的 IIS 角色启用“FTP 服务器”角色服务:
  5. 下一步是在 IIS 中创建实际的 FTP 站点。在 IIS 管理器中右键单击“站点”并选择“添加 FTP 站点...”
  6. 指定站点的名称和本地路径:
  7. 指定绑定和 SSL 信息:
  8. 最后指定谁应该有权访问 FTP 站点。
  9. 您现在应该能够从 VM 中访问 FTP 站点。打开命令提示符,键入ftp 127.0.0.1并登录
  10. 对于活动 FTP,您需要允许访问端口 21(FTP 命令端口)和 20(FTP 数据端口),因此您需要向 VM 添加两个端点
  11. 配置被动 FTP。为此,我们需要告诉 IIS FTP 服务器它可以用于数据连接的端口范围,并且我们需要向 VM 添加与此端口范围相对应的端点。
  12. 配置被动数据连接的端口范围和外部 IP 地址。这可以在 IIS 管理器中找到
  13. 外部 IP 地址应该是可以在 Azure 管理门户中找到的虚拟 IP 地址。
  14. 如果您无法在 IIS 管理器中指定数据通道端口范围,请使用 appcmd 实用程序,该实用程序位于%windir%\system32\inetsrvappcmd set config /section:system.ftpServer/firewallSupport /lowDataChannelPort:7000 /highDataChannelPort:7014
  15. 您可以在 Azure 门户中指定所有 15 个新端点,但这需要很长时间,因此请使用Windows Azure Powershell cmdlet
  16. 下载发布设置文件。一种方法是启动 Windows Azure Powershell 并使用 cmdlet 'Get-AzurePublishSettingsFile'。它会打开一个浏览器并允许您下载与您的 Windows Live id 对应的发布设置文件。
  17. 下载发布设置文件后,您可以使用“Import-AzurePublishSettingsFile”cmdlet 将其导入,我们已准备好开始添加端点。
  18. 我只是创建了一个文本文件,其中包含我想要运行的命令列表并将其复制到 Powershell 窗口中:Get-AzureVM -ServiceName 'myServiceName' -Name 'ftpportal' | Add-AzureEndpoint -Name 'FTPPassive00' -Protocol 'TCP' -LocalPort 7000 -PublicPort 7000 | Update-AzureVM其中“myServiceName”是我的云服务的名称,“ftpportal”是我的虚拟机的名称。
  19. 尽管 Windows 防火墙似乎允许所有需要的流量,但您还需要在防火墙上启用有状态 FTP 过滤:netsh advfirewall set global StatefulFtp enable
  20. 重新启动 FTP Windows 服务,我们应该可以启动并运行:
    • net stop ftpsvc
    • net start ftpsvc

值得遵循原始文章中的这些步骤,尤其是因为他为每个步骤都提供了有用的屏幕截图,但我认为值得在这里广泛引用以防万一。这篇文章还提到了 Active FTP vs. Passive FTP,这是值得一读的权威解释。

如果我能报告在执行这些步骤后,您的基于 Azure VM 的 FTP 服务器将正常工作并且可以访问,那就太好了。但不幸的是,上述步骤并没有为我解决这个问题:-(

于 2013-09-10T08:05:58.707 回答
10

如果您不介意使用 FileZilla FTP 服务器,

这是我所做的,以启用与我的 VM 的 FTP 连接。

  1. 转到 Azure VM (manage.windowsazure.com),然后添加 2 个端点:
    1. 名称:FTP(协议TCP,公共端口21,私有端口21)
    2. 名称:FTP Passive(协议 TCP,公共端口 60000,私有端口 60000)
  2. 返回到 VM(通过 RDP),打开端口 21 的连接,并在 Windows 防火墙入站规则上设置 60000。
  3. 下载并打开 FileZilla 服务器。
  4. 单击编辑 -> 用户并根据需要添加用户和共享目录。
  5. 单击编辑 -> 设置。在侧边栏上单击被动模式设置。
  6. 勾选“使用自定义端口范围”并输入 60000 - 60000
  7. 在 ip4specific 部分,选择单选按钮“使用以下 ip”,然后输入您的 xxxx.cloudapp.net。
  8. 保存并运行服务器。就是这样,您现在可以从 VM 外部连接到 FTP。

希望它可以帮助某人。

干杯

于 2015-10-28T17:43:20.690 回答
3

在上面的 15 点列表中徘徊了一段时间后,我收到了 MS 正在尝试传递的消息 - “没有(简单的)FTP 适合你”......

所以我回到了古老而开放的 Linux 世界——使用 Cygwin 设置了一个 SCP 服务器。您甚至可以获得一个远程外壳作为奖励......

1) 运行 Cygwin 安装程序 - https://cygwin.com/setup-x86.exe

2)在“选择包”搜索

  • cygrunsrv(选择“管理员”下的一项)
  • openssh(选择“Net”下的那个)

3) 完成后,启动 Cygwin 终端,然后键入:

  • ssh-host-config -y -pwd S0me-Str0ng-pa55w0rd

  • cygrunsrv -S sshd

4) 从 Azure VM 添加一个 SSH 端点

5) 在 Windows 防火墙中,为 TCP 端口 22 添加入站规则

还有中提琴——你当然可以使用 WinSCP、Notepad++ 和 Putty 进行连接……

笔记:

  • Unix 是区分大小写的,因此请输入您的用户名,例如大写字母 A
  • 您的驱动器位于 /cygdrive 下(c:\ 位于 /cygdrive/c 等)

祝你好运!

于 2014-08-31T19:58:21.877 回答
2

您需要添加一个额外的端口范围,ftp 服务器将为每个 ftp 连接选择该范围。

您需要创建一堆输入端点,每个端点代表指定端口范围内的一个端口。请注意,您的输入端点数量有限(不确定确切数量,但您应该可以轻松地在连续端口中打开 50 个输入端点)。然后只需将 ftp 服务器设置为使用相同的范围。此外,您需要将输入端点公共端口映射到相同的私有端口号,否则将无法正确创建连接。

于 2013-08-24T21:13:28.903 回答
1

哑巴的答案中的链接目前不可用。按照那里的步骤操作后,我仍然无法在新的 Azure VM 上运行被动 FTP。

经过一番搜索,我找到了这篇创建文章Passive FTP and dynamic ports。这是一个很棒的演练,并提供了一个简单的脚本,可以从您的 VM 运行,以便在一分钟内启动并运行 FTP。如果要设置多个 VM,则该脚本是设置 FTP 访问的一种更快的方法,而不是手动配置 IIS 和 Azure 端点。

于 2013-11-11T14:07:35.237 回答