FTP 服务器连接已连接但没有响应
FTP server connection connected but not responsive
我正在使用 vsftpd 设置一个 FTP 服务器。为了测试它,我使用 ftplib:
建立了一个 FTP 连接
connection = ftplib.FTP(host)
connection.login(user=username, passwd=password)
并检查它是否已连接使用:
connection.voidcmd("NOOP")
但是,执行几乎所有操作似乎都不起作用。例如:
connection.nlst()
一直等待然后超时。
通过 ftp 连接 (ubunut) 我看到消息:
Entering Passive Mode (0,0,0,0,xxx,xxx).
Filezilla 确实有效,这是怎么回事?
问题是被动连接不工作。这可能是因为:
- 被动地址未在 vsftpd.conf 中定义:pasv_address=`
listen
和 listen_ipv6
都在 vsftpd.conf 中定义
以防万一,还要检查被动端口是否未在防火墙规则下打开
Entering Passive Mode (0,0,0,0,xxx,xxx).
服务器将无效的目标地址 0.0.0.0 作为数据连接的目标。这是由于服务器中的错误或配置错误造成的。尝试连接到这个错误的 IP 地址当然会失败。
像 FileZilla 这样的一些客户端仍然可以工作,因为它们只是忽略给定的 IP 而只使用端口。这种行为是有道理的,因为在 FTP 的最常见用法(单个客户端和单个服务器之间的直接传输)中,数据连接的目标 IP 地址将与控制连接的相同,即两者都是服务器的IP。这也反映在较新的命令 EPSV
和 EPRT
中,它们仅指定端口而不再指定 IP 地址。
我正在使用 vsftpd 设置一个 FTP 服务器。为了测试它,我使用 ftplib:
建立了一个 FTP 连接connection = ftplib.FTP(host)
connection.login(user=username, passwd=password)
并检查它是否已连接使用:
connection.voidcmd("NOOP")
但是,执行几乎所有操作似乎都不起作用。例如:
connection.nlst()
一直等待然后超时。
通过 ftp 连接 (ubunut) 我看到消息:
Entering Passive Mode (0,0,0,0,xxx,xxx).
Filezilla 确实有效,这是怎么回事?
问题是被动连接不工作。这可能是因为:
- 被动地址未在 vsftpd.conf 中定义:pasv_address=`
listen
和listen_ipv6
都在 vsftpd.conf 中定义
以防万一,还要检查被动端口是否未在防火墙规则下打开
Entering Passive Mode (0,0,0,0,xxx,xxx).
服务器将无效的目标地址 0.0.0.0 作为数据连接的目标。这是由于服务器中的错误或配置错误造成的。尝试连接到这个错误的 IP 地址当然会失败。
像 FileZilla 这样的一些客户端仍然可以工作,因为它们只是忽略给定的 IP 而只使用端口。这种行为是有道理的,因为在 FTP 的最常见用法(单个客户端和单个服务器之间的直接传输)中,数据连接的目标 IP 地址将与控制连接的相同,即两者都是服务器的IP。这也反映在较新的命令 EPSV
和 EPRT
中,它们仅指定端口而不再指定 IP 地址。