常见的错误:FTP连接时出现“227 Entering Passive Mode”
FTP的主动模式(PORT Mode)及被动模式(Passive Mode)
FTP的特殊性:
大多数的TCP服务是使用单个的连接,一般是客户向服务器的一个周知端口发起连接,然后使用这个连接进行通讯。但是,FTP协议却有所不同,它使用双向的多个连接,而且使用的端口很难预计。一般,FTP连接包括:
1)一个控制连接(Control Connection)
这个连接用于传递客户端的命令和服务器端对命令的响应。它使用服务器的21端口,生存期是整个FTP回话时间。2)几个数据连接(Data Connection)
这些连接用于传输文件和其他数据,例如:目录列表等。这种连接在需要数据传输时建立,而一旦数据传输完毕就关闭。每次使用的端口也不一定相同。而且,数据连接即可能是客户端发起的,也可能是服务器端发起的。在FTP协议中,控制连接使用周知端口21。相反,数据传输连接的目的端口通常实现无法知道。FTP协议使用一个标准的端口21作为ftp-data端口,但是这个端口只用于连接的源地址是服务器端的情况,在这个端口上根本就没有监听进程。FTP的数据连接和控制连接的方向一般是相反的,也就是说,是服务器向客户端发起一个用于数据传输的连接。连接的端口是由服务器端和客户端协商确定的。FTP协议的这个特征对ISA转发以及防火墙和NAT的配置增加了很多困难。
除此之外,还有另外一种FTP模式,叫做被动模式(passive mod)。在这种模式下,数据连接是由客户程序发起的,和刚才讨论过的模式(我们可以叫做主动模式)相反。是否采取被动模式取决于客户程序,在ftp命令行中使用passive命令就可以关闭/打开被动模式。主动 FTP :
命令连接:客户端 >1024 端口 → 服务器 21 端口
数据连接:客户端 >1024 端口 ← 服务器 20 端口
被动 FTP :
命令连接:客户端 >1024 端口 → 服务器 21 端口
数据连接:客户端 >1024 端口 ← 服务器 >1024 端口
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了***X端口,你过来连接我”。于是服务器从20端口向客户端的***X端口发送连接请求,建立一条数据链路来传送数据。
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了***X端口,你过来连接我”。于是客户端向服务器的***X端口发送连接请求,建立一条数据链路来传送数据。
从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。而FTP的复杂性就在于此。
解决此问题的办法也很简单,关闭客户端的PASV方式,强制其用PORT方式访问服务器. 登录FTP服务器后用passive命令关闭客户端的PASV方式,
如下:
ctrl+R-->cmd-->输入ftp回车
ftp> passive
Passive mode off.
ftp> passive (再次运行命令可打开)
Passive mode on.
!!!鉴于使用云主机作为控制FTP服务器的,由于云主机本身对服务器端口就有限制,我们需要在云主机上创建安全组规则,开放端口(21+数据通道端口号)
1、创建安全组规则,设置数据通道范围如10000到10809端口和21端口
2、设置FTP的pasv端口范围(数据通道)
如果不设置端口范围,在防火墙开启的情况下,连接FTP时可能出现列表错误的现象,下面介绍下如何设置FTP的pasv端口范围。
一、首先打开IIS选择服务器会进入全局设置,再双击FTP防火墙支持

二、设置指定的,数据通道端口范围,建议10000到10809端口,如果有云主机则必须和云主机配置一致。

设置完毕后重新启动 FTP 服务
常见的错误:FTP连接时出现“227 Entering Passive Mode”的更多相关文章
- FTP连接时出现“227 Entering Passive Mode” 的解决方法
今天从公网的服务器连接本地内网的FTP server copy文件时,系统老是提示227 Entering Passive Mode (xxx,xxx,,xxx,xxx,x),很是奇怪,于是上网找资料 ...
- FileZilla客户端连接腾讯云FTP服务器时出现“227 Entering Passive Mode”
FTP的主动模式(PORT Mode)及被动模式(Passive Mode) FTP的特殊性: 大多数的TCP服务是使用单个的连接,一般是客户向服务器的一个周知端口发起连接,然后使用这个连接进行通讯. ...
- 227 Entering Passive Mode (xxx,xxx,,xxx,xxx,x)
登录ftp时显示227 Entering Passive Mode (xxx,xxx,,xxx,xxx,x) 因为FTP有两种工作模式,PORT方式和PASV方式,中文意思为主动式和被动式 ,详细介绍 ...
- FTP上传失败报错227 Entering Passive Model (222,111,8,111,10,40)
昨天为了一个ftp问题折腾了一天.问题背景:原来有个接口涉及到上传文件,服务端更换了ftp服务器,我们这边需要刷新连接服务端的ip和端口配置,代码没动.联调环境和验收环境都测试通过,一到生产环境就歇菜 ...
- Setting up a Passive FTP Server in Windows Azure VM(ReplyCode: 227, Entering Passive Mode )
This post is authored by Lalitesh Kumar, Pradeep M G and reviewed by Avinash Venkat Reddy. Also spec ...
- 【解决 FTP】windows访问Linux的vsftpd(FTP服务器)问题200 Switching to ASCII mode,227 Entering Passive Mode
转载:关于FTP主动模式(active mode)与被动模式(passive mode)的工作原理: 主动模式(服务器向客户端敲门,然后客户端开门)FTP:客户机与服务器之间建立连接时,客户机是大于1 ...
- VSFTP 连接时425 Security: Bad IP connecting.报错-----解决方法
当登录FTP时候出现这个报错时.是因为PASV模式的安全检查是开启的(默认是开启的) ftp> ls227 Entering Passive Mode (172,16,101,33,35,58 ...
- C# FTP上传文件时出现"应 PASV 命令的请求,服务器返回了一个与 FTP 连接地址不同的地址。"的错误
FTP上传文件时出现"应 PASV 命令的请求,服务器返回了一个与 FTP 连接地址不同的地址."的错误 解决方法是在原代码上增加这句话 reqFTP.UsePassive = f ...
- 新手学习Python时常见的错误
最近学习Python,现在把一些常见的错误总结如下: 1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加 :(导致 "Synta ...
随机推荐
- FZU 1977 Pandora adventure (DP)
题意:给定一个图,X表示不能走,O表示必须要走,*表示可走可不走,问你多少种走的法,使得形成一个回路. 析: 代码如下: #pragma comment(linker, "/STACK:10 ...
- (二分搜索)Can you solve this equation? -- hdu -- 2199
链接: http://acm.hdu.edu.cn/showproblem.php?pid=2199 Time Limit: 2000/1000 MS (Java/Others) Memory ...
- Npoi List DataTable导出一个Excel多个sheet 下载
参考: http://blog.csdn.net/zhouqinghe24/article/details/8649346 参考下载http://www.cnblogs.com/dyllove98/a ...
- 试题 D: 数的分解 蓝桥杯
试题 D: 数的分解本题总分: 10 分[问题描述]把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包含数字 2 和 4,一共有多少种不同的分解方法?注意交换 3 个整数的顺序 ...
- MySQL简单实现多字段模糊查询
我所做的商城项目前些时提了新需求,要求前台搜索商品除了能通过商品名称搜索到以外,还可以通过别个信息搜索,比如:商品编号.详情内容描述等等,类似于全文搜索了.我首先想到的就是lucene,但是对代码这样 ...
- 在TFS 2013中选择一周中的工作日,例如增加星期日
默认情况下,TFS在迭代视图中不计算周末的工作,如果出现调休的情况,则周末的工作日不会出现在迭代视图中,也不会参与燃尽图的计算.但是可以调整团队一周中的工作日,从而修正迭代计算方式,修改的方式参考下图 ...
- Tempdb--monitoring and troubleshooting
TempDB用来存放临时表.全局临时表.表变量以及排序或HASH等操作引发的中间结果集 TempDB在每次实例重启时重新创建,TempDB数据库文件的初始化大小取决于Model数据库的文件大小或显示A ...
- Ubuntu 16.04.2 LTS 安装 jdk1.6 和 tomcat6 (一)
java和tomcat环境配置已经有很多教程和文章,最近项目需要配置Ubuntu 16.04.2下的古老的java6和tomcat 6,遇到小坑,特记录和分享. 网上的教程不是太新,就是太老,还有一些 ...
- Session如何保存在sql数据库中
aspnet中,session默认以inproc模式存储,也就是保存在iis进程中,这样有个优点就是效率高,但不利于为本负载均衡扩展.可以把session信息保存在SQL Server中,据说,该种方 ...
- ActiveX 控件重绘无效问题,用CClientDC 而不是CPaintDC
ActiveX 控件重绘子控件时,用Invalid()会出现无效的情况即不会更新界面. OnPaint 方法里,是用的 CPaintDC,经测试无效,后换CClientDC,发现可以,百度查他们的区别 ...