我在Google云中有一个Windows 2016 VM实例。 我已经添加了一个入站Windows防火墙规则,允许端口21.我已经configuration谷歌云端口21的入站防火墙规则,以及所有端口的出站被动。
我能够连接到我的FTP服务器,但我收到此错误。
Response: 425 Can't open data connection for transfer of "/" Error: Failed to retrieve directory listing
请注意,我也启用了filezilla中的TLS,但是启用或不启用TLS,我都收到了同样的错误。
我已经尝试完全禁用Windows防火墙没有运气,所以无论我的gcloud防火墙设置是错误的,或者我的filezillaconfiguration是错误的。
任何帮助,将不胜感激!
如果你想使用TLS工作,你可能需要打开端口990甚至端口989 。 另一个encryption数据的select是使用SFTP。 在这里使用SFTP 在 GCE上configurationFilezilla是一个不错的指南
如果禁用TLS工作,这是一个明确的指示没有configuration或错误configuration的防火墙。 即使你声称你禁用了所有的防火墙,你似乎没有实际上。
一些防火墙足够智能检查FTPstream量,根据需要打开FTP数据连接端口。 但是,如果控制连接被encryption,防火墙将无法检查它,并且无法为您打开数据连接端口。 所以使用TLS,你必须自己configuration规则。
例如,在Windows防火墙中,该function称为“有状态FTP过滤”,并使用netsh advfirewall set global StatefulFtp ...命令进行configuration。
比较短
您无需在Google Cloudconfigurationoutbound rules 。 在你的情况下,除了port 21你需要添加额外的端口,例如50000-50500到Google Cloud Firewall (要添加到端口21指定的相同规则),然后在Windows Firewall (要添加到端口21指定相同的规则),并在页面Passive mode settings添加50000-50500到FileZilla Settings
属于
以下是基于Sever 2008完整说明(如果有人需要的话),因为我没有使用Server 2016 (一切应该非常相似)。 我也没有使用TLS因为我不需要它。 下面的设置允许FTP clients通过Passive mode工作。
Google云端设置
VPC network -> Firewall rules ; Create firewall rule ;
default-allow-ftp (无所谓); default (或你需要的); 1000 (无所谓); Ingress ; 0.0.0.0/0 (或您需要的); None (或您需要的); tcp:21,50000-50500 。 Windows防火墙设置 (取自此处 ,源代码也显示如何使用Command Line和PowerShell设置Firewall ):
Inbound Rules ,然后单击New Rule ; Rule Type部分中,selectPort并单击Next : Protocol and Ports部分,selectTCP作为协议的types21, 50000-50500在Specific local portsinput字段中键入21, 50000-50500 ; Action部分,selectAllow the Connection ,然后单击Next ; Profile部分,select所有三个选项,然后单击Next 。 如果您希望限制连接到特定的configuration文件,只需select您认为适合您的设置的configuration文件即可。 对于这个例子,我们将打开所有configuration文件的端口; Name部分中,input此规则的描述性名称。 build议在名称中列出端口号,以便规则易于识别。 准备好后单击Finish 。 FileZilla设置
General setting ;
Listen on these ports:到21 ; 在树中selectPassive mode settings ;
Use custom port range: ,input5000和50500 ; Use the following IP并input您的服务器IP(如果它是静态的)或selectRetrieve external IP address from: ; 编辑 – >用户;
General ;
Add并提供您要用于连接的username 。 username与Windows用户帐户没有任何关系,因为FileZilla使用自己的用户帐户系统; Enable account ,如果需要, Password ; Shared folder ;
笔记:
FileZilla的权限与您的“主目录”文件夹的Windows权限设置没有任何关系。 这意味着如果FileZilla的设置允许用户创build文件夹\文件,但通过Windows File Explorerconfiguration的权限不允许这样做,比用户不能在“主目录”中写入任何文件\文件夹。
对于添加到FileZilla中的Windows用户,它们就像“未知”一样,所以Windows根本不允许任何对“主目录”文件夹的访问。 为了解决这个问题,我只是在“家目录”文件夹的安全设置中添加了Allconfiguration文件。
奖金#1
如果每次启动FileZilla interface ,您都可以通过msconfig禁用这种行为:
msconfig ; Startup选项卡 – >解开FileZilla Server – >确定; 奖金#2
如果linux用户想使用command line从ftp服务器下载文件:
wget ftp://username:password@server_ip_address/home_dir/file_name