FTP连接时出现“227 Entering Passive Mode” 的解决方法

Posted 格格巫 MMQ!!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FTP连接时出现“227 Entering Passive Mode” 的解决方法相关的知识,希望对你有一定的参考价值。

今天从公网的服务器连接本地内网的FTP server copy文件时,系统老是提示227 Entering Passive Mode (xxx,xxx,xxx,xxx,x),很是奇怪,于是上网找资料仔细研究了一下,原来FTP有两种工作模式,PORT模式和PASV模式.

在主动模式下,FTP客户端随机开启一个大于1024的本地端口(比如N号端口)向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。
服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端的N+1号端口进行数据传输。


在被动模式下,FTP库户端随机开启一个大于1024的本地端口(比如N号端口)向服务器的21号端口发起连接,同时会开启N+1号端口,
然后向服务器发送PASV命令通知服务器自己处于被动模式。服务器收到该命令后,会开放一个大于1024的端口(比如P号端口)进行监听,
然后用PORT P命令通知客户端,而自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的P号端口,
最后在客户端N+1号端口和服务器的P号端口之间进行数据传输。


用下面的图例会更清晰说明两者之间的区别:


*主动模式


命令连接:客户端 大于1024 端口 → 服务器 21 端口
数据连接:客户端 大于1024 端口 ← 服务器 20 端口

*被动模式

命令连接:客户端 大于1024 端口 → 服务器 21 端口
数据连接:客户端 大于1024 端口 ← 服务器 大于1024 端口

总的来说,主动模式是服务器主动连接客户端的数据端口,被动模式是服务器被动地等待客户端连接自己的数据端口。

被动模式通常用在处于防火墙之后的FTP客户端需要访问外界FTP服务器的场景,因为在这种场景下,防火墙通常被配置为不允许外界访问防火墙之后主机,而只允许防火墙之后的计算机发起的连接请求。因此在这种场景下不能使用主动模式,而被动模式可以良好的工作。

由于我的本地FTP服务器在内网,只是从外网映射了两个端口(20,21),即FTP服务器处于防火墙之后,所以应该使用主动模式。 

ftp> passive
Passive mode off.

ftp> passive (再次运行命令可打开)

Passive mode on.

在这里插入图片描述

以上是关于FTP连接时出现“227 Entering Passive Mode” 的解决方法的主要内容,如果未能解决你的问题,请参考以下文章

FTP连接时出现“227 Entering Passive Mode”的解决 selinux导致ftp上传失败

FTP连接时出现“227 Entering Passive Mode” 的解决方法

FTP连接时出现“227 Entering Passive Mode” 的解决方法

关于LINUX下WGET命令的问题.

ftp 连接不上怎么办啊

用FlashFXP时总是连接失败是啥原因