PASV命令后wget ftp连接失败

The*_*son 10 connection ftp wget

在尝试将所有文​​件从一个 Web 服务器(“源”)传输到另一个(“目标”)时,wget 命令通过 FTP 进行连接,但无法在 PASV 命令之外继续进行。

我正在使用到“目标”服务器(共享主机上的 Linux 机器)的 SSH 连接来运行 wget 命令。

“源”服务器是微软服务器,我桌面上的FTP客户端没有问题。

这是我用来启动传输的命令:

wget -m ftp://username:'password'@sourceserver.com
Run Code Online (Sandbox Code Playgroud)

登录成功,然后发出这些命令:

==> SYST ... done.      ==> PWD ... done.
==> TYPE I ... done.    ==> CWD not needed.
==> ... couldn't connect to xxx.xxx.xxx.xxx port 1128: Connection timed out
Retrying.
Run Code Online (Sandbox Code Playgroud)

由于“无法连接”错误,每次重试时,它都会尝试不同的端口号(不是 21,它已经成功连接到)。我第一次记录错误时,它尝试了 487X 范围内的端口。

我不知道问题是在 Microsoft(“源”)服务器端还是在 Linux(“客户端”)端。

想法?

ytl*_*l21 8

另一种方法是避免被动模式,在 wget 命令中添加 --no-passive 参数可以做到。

wget -r --no-passive --no-parent ftp://account:<password>@<ip address>/folder/ -P /root
Run Code Online (Sandbox Code Playgroud)


Ste*_*ich 3

对于文件传输或目录列表,FTP 在动态端口上打开额外的 TCP 连接。在主动模式下,客户端创建一个本地侦听器,并使用 PORT 命令让服务器知道其 IP:端口,然后服务器连接到客户端端口(通常来自服务器端的端口 20)。在被动模式下,服务器打开端口并让客户端知道它在哪里侦听以响应客户端 PASV 命令。

两种模式都需要

  • 另一方可访问的 IP,例如客户端位于简单 NAT 路由器后面的主动模式将无法工作
  • 无或开放的防火墙,因为每个连接的侦听器端的端口都不同。

如果您从桌面客户端访问它没有任何问题,则可能是您的桌面客户端使用主动模式,而 wget 使用被动模式,或者您的桌面和服务器之间没有防火墙/NAT 路由器,但在您的共享主机和服务器之间有一个。

在没有获得有关您的设置的更多详细信息的情况下,很难进行更多推测。