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(“客户端”)端。
想法?
另一种方法是避免被动模式,在 wget 命令中添加 --no-passive 参数可以做到。
wget -r --no-passive --no-parent ftp://account:<password>@<ip address>/folder/ -P /root
Run Code Online (Sandbox Code Playgroud)
对于文件传输或目录列表,FTP 在动态端口上打开额外的 TCP 连接。在主动模式下,客户端创建一个本地侦听器,并使用 PORT 命令让服务器知道其 IP:端口,然后服务器连接到客户端端口(通常来自服务器端的端口 20)。在被动模式下,服务器打开端口并让客户端知道它在哪里侦听以响应客户端 PASV 命令。
两种模式都需要
如果您从桌面客户端访问它没有任何问题,则可能是您的桌面客户端使用主动模式,而 wget 使用被动模式,或者您的桌面和服务器之间没有防火墙/NAT 路由器,但在您的共享主机和服务器之间有一个。
在没有获得有关您的设置的更多详细信息的情况下,很难进行更多推测。