使用wget下载文件时FTP连接超时

3

我正在尝试从FTP服务器下载一个文件。我可以通过浏览器手动下载该文件,但是当我使用wget时,下载超时了。

有人能帮我解决这个问题吗?

wget --ftp-user=user_name --ftp-password=password ftp://url/file_name.zip

日志:

--2014-12-09 08:37:34--  ftp://url/file_name.zip
       => `file_name.zip'
Resolving url (url)... x.x.x.x
Connecting to url(url)|x.x.x.x|:x... connected.
Logging in as user_name ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD not needed.
==> SIZE file_name.zip ... 15582845
==> PASV ... couldn't connect to 10.0.3.33 port 12185: Connection timed out
2个回答

0
如果您的FTP服务器是proftp并且位于NAT网络后面,请在proftpd.conf中添加服务器限制端口:

PassivePorts 8000 9000


PassivePorts命令--指定要使用的ftp-data端口范围
这对我很有效。


0

==> PASV ... 无法连接到10.0.3.33端口12185:连接超时

服务器在响应PASV命令时报告了一个私有IP地址。我猜测该服务器不在您的私有网络中,而是在NAT路由器后面的另一个私有网络中。在这种情况下,只有在路由器将所有必要的端口转发到服务器并且服务器报告外部地址(路由器的地址)而不是内部地址时,PASV才可能成功。

一些客户端通过忽略Passive响应中给定的IP地址,仅使用给定端口和服务器的公共IP来解决此类配置不良的服务器问题。或者他们不使用PASV,而是使用EPSV,其中服务器根本不返回IP地址,而只返回端口。


那么,我能否有其他方法来下载这个文件呢? - DanMatlin
根据您的描述,它与浏览器一起使用,因此您已经有了一种替代方法。 - Steffen Ullrich
我的意思是,除了在终端中下载文件之外,是否有其他的选择,因为我需要在我的服务器上执行相同的操作。 - DanMatlin
如果服务器有公共IP,您可以尝试主动模式(可能会被防火墙阻止),或者使用EPSV代替PASV,或者使用一些忽略服务器发送的IP的客户端。我不知道哪些客户端会这样做。当然,最好的方法是修复服务器。 - Steffen Ullrich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接