0

我正在使用 vsftpd 建立一个 FTP 服务器。为了测试它,我使用 ftplib 建立了一个 FTP 连接:

connection = ftplib.FTP(host)
connection.login(user=username, passwd=password)

并检查它是否使用以下方法连接:

connection.voidcmd("NOOP")

然而,执行几乎任何事情似乎都不起作用。例如:

connection.nlst()

永远等待,然后超时。

通过 ftp (ubunut) 连接我看到以下消息:

进入被动模式(0,0,0,0,xxx,xxx)。

Filezilla 确实有效,这怎么可能?

4

2 回答 2

2

进入被动模式(0,0,0,0,xxx,xxx)。

服务器将无效的目标地址 0.0.0.0 作为数据连接的目标。这是由于服务器中的错误或配置错误造成的。尝试连接到这个错误的 IP 地址当然会失败。

一些像 FileZilla 这样的客户端仍然可以工作,因为它们只是忽略给定的 IP 并且只使用端口。这种行为是有道理的,因为在最常见的 FTP 使用中(单个客户端和单个服务器之间的直接传输),数据连接的目标 IP 地址将与控制连接的相同,即两者都是服务器。这也反映在较新的命令中EPSVEPRT这些命令仅指定端口,不再指定 IP 地址。

于 2019-10-03T12:34:35.807 回答
0

问题是被动连接不起作用。这可能是因为:

  1. 被动地址未在 vsftpd.conf 中定义:pasv_address=`
  2. 两者listenlisten_ipv6在 vsftpd.conf 中定义

以防万一,还要检查被动端口是否未在防火墙规则下打开

于 2019-10-03T11:25:48.873 回答