200 PORT命令成功。考虑使用PASV。 425无法建立连接

时间:2013-10-22 11:12:14

标签: windows ftp

我在Ubuntu 12.04 LTS中设置了FTP服务器。

现在,当我尝试通过命令行ftp.exe从Windows 7连接到FTP服务器时,我成功连接但我无法获取目录列表。我收到错误

200 PORT command successful. Consider using PASV.
425 Failed to establish connection. 

6 个答案:

答案 0 :(得分:11)

在使用passive之前尝试使用ls命令。

从FTP客户端,要检查FTP服务器是否支持被动模式,请在登录后键入quote PASV

以下是带有被动模式的vsftpd服务器的连接示例

vsftpdpasv_enable=NO

# ftp localhost
Connected to localhost.localdomain.
220 (vsFTPd 2.3.5)
Name (localhost:john): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quote PASV
550 Permission denied.
ftp> 

vsftpdpasv_enable=YES

# ftp localhost
Connected to localhost.localdomain.
220 (vsFTPd 2.3.5)
Name (localhost:john): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quote PASV
227 Entering Passive Mode (127,0,0,1,173,104).
ftp> 

答案 1 :(得分:10)

您正在以活动模式使用FTP。

由于防火墙和NAT,现在在活动模式下设置FTP可能很麻烦。

可能是因为您的本地防火墙或NAT服务器无法连接回客户端以建立数据传输连接。

或者您的客户端不知道其外部IP地址,而是向服务器(在PORT命令中)提供内部地址,服务器显然无法使用该地址。但情况并非如此,因为vsftpd默认拒绝数据传输地址与FTP控制连接的源地址(port_promiscuous指令)不同。

请参阅我的文章Network Configuration for Active Mode


如果可能,您应该使用被动模式,因为它通常不需要在客户端进行额外设置。这也是服务器通过“考虑使用PASV”向您建议的内容。 PASV是用于进入被动模式的FTP命令。

不幸的是,Windows FTP命令行客户端(ftp.exe)根本不支持被动模式。现在它变得毫无用处。

请改用其他第三方Windows FTP命令行客户端。大多数其他人支持被动模式。

例如WinSCP FTP client默认为被动模式,并且有可用于转换Windows FTP script to WinSCP script的指南。

(我是WinSCP的作者)

答案 2 :(得分:4)

实际上您的窗口防火墙会阻止连接,因此您需要从Administrator中将这些命令输入cmd.exe。

1)$d = new DateTime(); $string = 'not a valid modifier'; if (modifyIsValid($string)) { // Continue } else { // Print a friendly error message. }

2)netsh advfirewall firewall add rule name="FTP" dir=in action=allow program=%SystemRoot%\System32\ftp.exe enable=yes protocol=tcp

如果出现问题,您可以通过以下方式恢复:

1)netsh advfirewall firewall add rule name="FTP" dir=in action=allow program=%SystemRoot%\System32\ftp.exe enable=yes protocol=udp

答案 3 :(得分:0)

您需要使用被动模式。

如果您使用的是Linux客户端,请使用pftpftp -p

来自man ftp

-p    Use passive mode for data transfers. Allows use of ftp in environments where a firewall prevents connections from the outside world back to the client machine. Requires that the ftp server support the PASV command. This is the default if invoked as pftp.

答案 4 :(得分:0)

对我有用的只是输入命令passive,然后ftp从主动模式进入被动模式。

答案 5 :(得分:-1)

禁用Windows防火墙,然后在cmd中再次运行ftp命令,它会工作