FTP 主动/被动功能无法按预期工作

FTP 主动/被动功能无法按预期工作

所以我现在遇到了一个有趣的问题。我正尝试使用 curl(CentOS 上的 7.15.5)从远程 FTP 服务器检索文件。我们的客户上周末做了一些更改,因为它在星期五可以正常工作,但现在不行了。

我可以使用 CLI 客户端通过 FTP 连接,并能很好地获取目录列表,尽管我必须发出“passive”才能关闭被动模式。如果我不这样做,我会得到

421 Service not available, remote server has closed connection
Passive mode refused.  Turning off passive mode.
No control connection for command: Transport endpoint is not connected
ftp> 

好吧。显然,需要禁用被动模式。我读过几次手册页,我知道我需要使用 -P 来指定“主动”模式,但是从文档来看,这似乎会在客户端(我的)机器上打开一个端口,以便数据传输到该端口。由于它位于防火墙后面,所以这行不通。

这告诉我我误解了一些事情,因为 CLI 客户端以主动模式工作。

帮助我 serverfault-kenobi,你是我唯一的希望。

答案1

关联很好地解释了主动与被动。

答案2

我得到了它!

钥匙使用-P,但您必须使用“明显的”选择,因为您无法打开另一个端口并让其连接。

引用文档:

- 让 curl 选择已用于控制连接的相同 IP 地址

因此 curl 命令

curl -u username:password -P - -o output.file ftp://whatever/source.file

-P -是最重要的部分。本质上,它使 curl 使用唯一可用的连接(命令连接)来传输数据。

欢呼!

答案3

对我来说 - 为了使其发挥作用 - 我还必须添加--disable-eprt

curl --disable-eprt -u username:password -P - ftp://whatever/source.file

相关内容