500 Illegal PORT command的问题(主被动模式)

sushuanglei 2012-02-22

在windows的dos窗口用FTP命令去连时,可以登录,但使用ls等命令时,出现:

500IllegalPORTcommand.

425UsePORTorPASVfirst.

根据提示是被动模式的问题。

FTP主/被动模式的原理

-----------------------------------------------------------------------------------------------

FTP是FileTransferProtocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。

FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。

PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。

PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。

概括:

--------------------------------------------------------------------------------

主动模式:服务器向客户端敲门,然后客户端开门

被动模式:客户端向服务器敲门,然后服务器开门

所以,如果你是如果通过代理上网的话,就不能用主动模式,因为服务器敲的是上网代理服务器的门,而不是敲客户端的门

而且有时候,客户端也不是轻易就开门的,因为有防火墙阻挡,除非客户端开放大于1024的高端端口

--------------------------------------------------------------------------------

要用主动模式来下载,请您把下载工具的被动模式(PASV)都不要打勾,用主动模式来下载就OK了,如果在出错,那就被动主动相互转换一下

---------------------------------------------------------------------------------

如何设置vsftpd的主动与被动模式:

Vsftpd的配置文件 /etc/vsftpd/vsftpd.conf 

主动模式设置

Port_enable=YES开启主动模式(default:YES)

Connect_from_port_20=YES当主动模式开启的时候是否启用默认的20端口监听

Ftp_date_port=%portnumber%上一选项使用NO参数是指定数据传输端口

被动模式

PASV_enable=YES开启被动模式

PASV_min_port=%number%被动模式最低端口

PASV_max_port=%number% 被动模式最高端口 

----------------------------------------------------------------------------------

大部分FTP客户端默认使用PASV方式,PASV模式的意式是被动模式。在大部分FTP客户端的设置里,常见到的字眼都是“PASV”或“被动模式”。

IE:工具->Internet选项->高级->“使用被动FTP”(需要IE6.0以上才支持)。

CuteFTP:Edit->Setting->Connection->Firewall->“PASVMode”

或File->SiteManager,在左边选中站点->Edit->“UsePASVmode”

FlashGet:工具->选项->代理服务器->直接连接->编辑->“PASV模式”

FlashFXP:选项->参数选择->代理/防火墙/标识->“使用被动模式”

或站点管理->对应站点->选项->“使用被动模式”

或快速连接->切换->“使用被动模式”

LeapFTP:Option->Preferences->General->Proxy->UsePasvMode

相关推荐