FTP挂起:150打开ASCII模式数据连接


15

我正在Windows 2008服务器(R2)上设置FTP服务器。

一切似乎都已正确安装,但使用FTP客户端登录FTP服务器时遇到问题。

我可以将桌面远程连接到服务器,并且可以通过DOS命令轻松登录。

但是,如果发出“ DIR”之类的命令,它将挂起:150打开ASCII模式数据连接。

我研究和阅读的所有内容都指向防火墙端口和/或被动/主动模式设置。

这就是困扰我的地方...如果我使用DOS FTP命令,则仅当我使用“本地主机”作为地址时,才能登录并使用“ DIR”命令。

如果指定完整的FTP URL,则会出现挂起错误。

如果指定“ localhost” URL,则不会收到错误消息。

这使我相信它是防火墙问题(甚至是IIS7问题?),但是我不确定需要打开哪些端口?

我的Windows防火墙上有开放的端口20、21。我还在我的AWS(Amazon)防火墙上打开了这些端口。

我相信我的FTP客户端正在使用一些远程端口号,这些端口号可能会被我的两个防火墙之一阻止。香港专业教育学院使用网络监视工具来尝试查看它正在调用什么端口,但我无法弄清楚。

有什么想法,技巧,窍门,帮助吗?

Answers:


9

FTP服务器和FTP客户端使用FTP的“控制通道”来协商哪些端口将用于数据传输(包括在执行“ dir”或“ ls”时的目录列表)。因此,如果您的“ AWS防火墙”不在此通道上进行协议检查,则他将无法知道它必须动态打开哪些端口以允许流量通过(一旦不再使用这些端口,则将其关闭)。

IMHO使用网络监视来发现正在使用的端口是不值得的,因为对于每个新的FTP会话,这些端口都会更改。

除非您已经做过,否则最好的解决此问题的办法就是在保护FTP服务器的防火墙上进行任何调整(如果我正确理解了您的问题,这将是“ AWS防火墙”),然后查看是否存在是用于检查FTP协议的任何“旋钮”。


6

尝试使用ls命令从Ubuntu命令行列出UNIX FTP主机服务器上存储的文件时,我收到了相同的消息。ftp ftp.example.com出现提示时,我能够使用并输入用户名和密码成功登录。但是,我会收到此150 Opening ASCII mode data connection消息,但没有任何反应。然后,我只需-p使用该命令输入选项(将其更改为“被动”模式以处理防火墙)即可。

 ftp -p ftp.example.com

出现提示时输入用户名和密码,然后命令诸如lscd将起作用。我相信您也可以输入此命令,它将执行相同的操作,但是我尚未对其进行测试。

pftp ftp.example.com

我知道这个问题与Windows有关;但是,考虑到产生了相同的错误,该技巧值得发布。



5

为了获得有关为什么阻塞连接的真实信息,您将必须使用记录所有协议命令的客户端来查看实际发生的情况。在FTP上有一个不错的网站,这里有示例日志。

不过最有可能

  1. 您的客户端位于(哑巴或SSL阻止的)防火墙之后,并尝试使用主动模式FTP
  2. 您的服务器位于(哑巴或SSL阻止的)防火墙之后,并尝试使用被动模式FTP

如果使用的是SSL,唯一的答案是在防火墙上打开一定范围的端口(例如10000-11000),并将FTP服务器配置为强制使用被动模式并使用该端口范围。如果您的服务器正在使用NAT,则还需要设置服务器的正确IP地址以向客户端做广告,大多数服从该服务器提供的作为被动模式连接字符串的内容,并且如果服务器认为它是10.1.1.1,那就是它会告诉客户。

如果您不使用SSL,最好的答案是查看防火墙是否可以对FTP进行协议检查。防火墙将读取端口21上的流量,并打开服务器要打开的任何端口。这通常也可以修复NAT地址(当防火墙也在处理NAT时)。您可能仍要强制使用被动模式,因为有些人不知道如何正确配置其FTP客户端,并且如今,几乎每个人都在宽带路由器/防火墙的后面。

如果您无法获得更智能的防火墙,则必须坚持“打开一堆端口”选项(或切换到不需要打开一堆随机端口的协议,例如ssh的sftp)。


4

我遇到了这个问题,可以通过执行以下操作解决。

我使用的是FireFTP,默认情况下通过被动模式进行连接。在IIS中设置FTP时,默认端口为21。我必须在防火墙中打开端口21,这使我更进一步,但它会挂在“ 打开ASCII模式”数据连接处

事实证明,然后选择其他一些动态端口。我知道这是一个防火墙问题,因为关闭FTP的防火墙连接正常。也在服务器本地-没有问题。

要修复,我在树的服务器级别(即顶部节点)上加载了IIS(使用8.0版,认为与7.5版相同),然后单击它并选择“ FTP防火墙支持”。您使用的每个FTP站点都将使用这些端口范围,因为各个FTP站点继承自本节,因此该选项将显示为灰色。

在“数据通道端口范围”中,指定x个端口,在本例中为10000-10125

现在,在防火墙中打开该TCP端口范围作为“ FTP被动端口范围”。

然后,我认为该问题将得到解决,但不能完全解决。确保重新启动Microsoft FTP服务服务以选择新的端口范围。关闭FireFTP /客户端,然后重试,这一次您不走运。:)


1

我与您有相同的问题,并已解决。

我所做的是打开Windows防火墙(Win7),单击“通过Windows防火墙允许程序或功能”,然后在“允许的程序和功能”列表中,找到“文件传输程序”并勾选复选框。

完成后,打开命令提示符并输入ftp XXXX,登录,然后输入ls / dir / get / put,现在一切正常。

但是我仍然无法通过File Zilla和Web浏览器建立连接,希望它对您有用。



1

不要弄乱您的设置

只需在具有高级安全性的Windows防火墙中添加出站规则,然后将端口号设置为20。

在CLI上享受FTP


1

对我来说,问题出在本地PC上,而不是远程主机上。我确认在远程主机上安装的FTP服务已正确打开了服务器防火墙上所需的所有端口,所以这不是问题。并不是我的本地客户端PC在玩。所以,

  1. 我打开了Windows Defender防火墙。
  2. 然后,我单击了左侧的链接“允许Windows Defender防火墙通过应用程序或功能”:

在此处输入图片说明

  1. 我向下滚动到“文件传输程序”,然后选中“域”,“私有”和“公共”复选框:

在此处输入图片说明

这终于为我解决了!当我重试LS命令时,响应是瞬时的,不再挂断。


0

我们使用Windows防火墙“新建入站规则向导”解决了此问题。选择“程序”,然后选择“ C:\ Windows \ System32 \ ftp.exe”,“允许连接”,“检查”选项;域,私有,公共(如果需要,您可以稍后限制),为规则命名即可完成。

现在通过ftp到ftp站点并验证dir或ls正确响应。


0

我遇到了与OP相同的问题

200 PORT命令成功。
150打开ASCII模式数据连接。
425无法打开数据连接。

当我尝试在Windows中的命令行上使用被动模式时,遇到了上述问题。
我通过搜索材料找到了想要的信息:

IE通常使用被动模式,而命令行实用程序(ftp命令)始终使用主动模式。

我在IE中尝试了以前的操作,但效果很好。

资料链接:https : //forums.iis.net/t/1207342.aspx?150+Opening+ASCII+mode+data+connection+for+file+list+425+Can+t+open+data+connection+

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.