所以我现在有一个有趣的问题。我正在尝试使用 curl(CentOS 上的 7.15.5)从远程 FTP 服务器检索文件。我们的客户上周末改变了一些东西,因为它在星期五有效,而现在无效。
我可以使用 CLI 客户端进行 FTP 访问,并获得一个目录列表就好了,尽管我必须发出“被动”来关闭被动模式。如果我不这样做,我会得到
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,你是我唯一的希望。
这个链接很好地解释了主动与被动。
我知道了!
关键是使用
-P
,但你必须使用“明显”的选择,因为你不能打开另一个端口并让它连接。引用文档:
- 使 curl 选择已用于控制连接的相同 IP 地址
所以 curl 命令
这
-P -
是重要的部分。本质上,它使 curl 使用唯一可用的连接(命令连接)来传输数据。欢呼!
对我来说——为了让它发挥作用——我还必须添加
--disable-eprt
: