2013-10-22 31 views
8

我在Ubuntu 12.04 LTS中设置了FTP服务器。200 PORT命令成功。考虑使用PASV。 425无法建立连接

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

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

回答

4

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

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

以下是连接示例与上下车

vsftpdpasv_enable=NO被动模式下的vsftpd服务器:

# 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> 
+0

'报价PASV'不会帮助。它只将服务器切换到被动模式。但不是客户。请参阅[如何在Windows命令提示符下使用被动FTP模式?](http://stackoverflow.com/q/18643542/850848) –

+0

@MartinPrikryl我不确定您是否阅读我的答案。另外,似乎人们一直在编辑我的答案。但是,您对Windows命令提示符是正确的。 – Shannon

+0

是的,我读了你的答案。这个问题是关于Windows'ftp.exe'(*我尝试通过命令行***从** Window 7连接到FTP服务器)。在Windows ftp.exe中,没有'passive'命令,甚至不支持被动模式。所以你的回答与这个问题无关。 –

8

您正在使用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

其实你的窗口防火墙阻止连接,所以你需要从管理员输入这些命令到CMD.EXE。

1)的netsh advfirewall防火墙添加规则名称= “FTP” DIR =在行动=允许程序=%SYSTEMROOT%\ System32下\ Ftp.exe的启用=是协议= TCP

2)的netsh advfirewall防火墙添加规则名称= “FTP” DIR =行动=允许程序=%SYSTEMROOT%\ SYSTEM32 \ Ftp.exe的启用= YES协议UDP =

如果万一出现问题,那么你可以通过这个回复:

1)netsh advfirewall防火墙删除规则名称=“FTP”程序=%SystemRoot%\ System32 \ ftp.exe

+0

为我工作谢谢 –