我在Ubuntu 12.04 LTS中设置了FTP服务器。
现在,当我尝试通过命令行ftp.exe
从Windows 7连接到FTP服务器时,我成功连接但我无法获取目录列表。我收到错误
200 PORT command successful. Consider using PASV.
425 Failed to establish connection.
答案 0 :(得分:11)
在使用passive
之前尝试使用ls
命令。
从FTP客户端,要检查FTP服务器是否支持被动模式,请在登录后键入quote PASV
。
以下是带有被动模式的vsftpd服务器的连接示例
vsftpd
与pasv_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>
vsftpd
与pasv_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客户端,请使用pftp
或ftp -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命令,它会工作