我已在多个网站(http://blogs.thesitedoctor.co.uk/tim/Trackback.aspx?guid=e81a4682-0851-490b-a3d2-adf254a701e7和http://www.itq.nl/blogs/post/Walkthrough-Hosting-FTP-on-IIS-75-in-Windows-Azure-VM.aspx以及Passive FTP on Windows Azure Virtual Machine)上尝试了这些建议,但这样做无效。
FTP主动和被动都可以从VM工作到自身。 FTP活动来自外部世界。 FTP被动失败,服务器响应“550网络连接被本地系统中止”(此消息在SYN数据包发送到其中一个动态端口后立即在控制通道/端口21上返回)。
我做了什么:
1)在具有FTP站点的VM上配置IIS
2)将FTP防火墙支持IP地址设置为Azure VM实例的公共IP地址(为了它的价值,我也尝试将此字段清空并尝试使用私有IP地址,但它们都不起作用)
3)设置FTP控制(TCP / 21),FTP数据(TCP / 20)和FTP动态端口(7000到7003)的端点
4)使用appcmd.exe设置FTP的端口范围(即%windir%\ system32 \ inetsrv \ appcmd set config /section:system.ftpServer/firewallSupport / lowDataChannelPort:7000 / highDataChannelPort:7003)
5)重启FTP服务器(net stop ftpsvc和net start ftpsvc)
6)尝试启用和禁用防火墙(netsh advfirewall设置全局StatefulFtp启用)
有什么想法吗?我已经使用Wireshark验证了客户端正在尝试使用动态端口,并且当我在本地尝试时正在使用动态端口。
答案 0 :(得分:2)
在MSDN论坛上收到答复。显然管理控制台存在问题,您必须使用Azure Powershell:http://social.msdn.microsoft.com/Forums/windowsazure/en-US/8f697f17-72b7-46f7-8c97-398b91190a2f/server-2012-vm-on-azure-passive-ftp-wont-work
答案 1 :(得分:1)
我能够在不使用任何Powershell命令的情况下让被动FTP在我的Azure VM上运行。只需按照以下步骤操作:http://blogs.msdn.com/b/wats/archive/2013/12/13/setting-up-a-passive-ftp-server-in-windows-azure-vm.aspx
上面的文章介绍了在Azure VM上设置FTP所需的所有步骤。
希望这有帮助!
答案 2 :(得分:0)
Azure VM端点有4分钟超时。对于FTP,这意味着如果被动数据传输花费的时间超过4分钟,则主连接(端口21)会因为在远程文件传输时发生错误而发生超时!
现在您有两个选择:
<强> 1 强> 可以将VM端点的超时设置为最多30分钟。
执行此操作的Powershell命令是:
> Get-AzureVM -ServiceName "MyService" -Name "MyVM" | Set-AzureEndpoint -Name "MyEndpoint" -IdleTimeoutInMinutes 30 | Update-AzureVM
更多信息here。
2. :创建ILIP(实例级IP)
您可以创建ILIP以绕过VM Webservice enpoint层。执行此操作的PowerShell命令是:
Get-AzureVM -ServiceName “MyService” -Name “MyVM” | Set-AzurePublicIP -PublicIPName "MyNewEndpoint" | Update-AzureVM
更多信息here。