FileZilla客户端连接腾讯云FTP服务器时出现“227 Entering Passive Mode”

article/2025/10/26 5:57:59

在这里插入图片描述
FTP的主动模式(PORT Mode)及被动模式(Passive Mode)
FTP的特殊性:
大多数的TCP服务是使用单个的连接,一般是客户向服务器的一个周知端口发起连接,然后使用这个连接进行通讯。但是,FTP协议却有所不同,它使用双向的多个连接,而且使用的端口很难预计。一般,FTP连接包括:

1)一个控制连接(Control Connection)

这个连接用于传递客户端的命令和服务器端对命令的响应。它使用服务器的21端口,生存期是整个FTP回话时间。

2)几个数据连接(Data Connection)

这些连接用于传输文件和其他数据,例如:目录列表等。这种连接在需要数据传输时建立,而一旦数据传输完毕就关闭。每次使用的端口也不一定相同。而且,数据连接即可能是客户端发起的,也可能是服务器端发起的。

FTP有两种工作模式,PORT方式和PASV方式,中文意思为主动式和被动式 ,详细介绍如下:

主动模式(PORT Mode):在FTP协议中,控制连接使用周知端口21。相反,数据传输连接的目的端口通常实现无法知道。FTP协议使用一个标准的端口21作为ftp-data端口,但是这个端口只用于连接的源地址是服务器端的情况,在这个端口上根本就没有监听进程。FTP的数据连接和控制连接的方向一般是相反的,也就是说,是服务器向客户端发起一个用于数据传输的连接。连接的端口是由服务器端和客户端协商确定的。FTP协议的这个特征对ISA转发以及防火墙和NAT的配置增加了很多困难。

被动模式(Passive Mode):在这种模式下,数据连接是由客户程序发起的,和主动模式相反。是否采取被动模式取决于客户程序,在客户端ftp命令行中使用passive命令就可以关闭/打开被动模式。
  主动 FTP :
    命令连接:客户端 >1024 端口 → 服务器 21 端口 (FTP客户端随机开启一个大于1024的本地端口向服务器的21号端口发起连接)
    数据连接:客户端 >1024 端口 ← 服务器 20 端口
  被动 FTP :
    命令连接:客户端 >1024 端口 → 服务器 21 端口
    数据连接:客户端 >1024 端口 ← 服务器 >1024 端口

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

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

从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。而FTP的复杂性就在于此。

解决此问题的办法也很简单,我们需要在云主机控制台上创建安全组规则,设置入站规则如:1024到65535端口和21端口
在这里插入图片描述
或者开启PASV(被动模式)
在 /etc/vsftpd/vsftpd.conf 的最下面加入

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999

wq 保存退出
重启FTP服务器

systemctl restart vsftpd

同样在云主机控制台上创建安全组规则,设置入站规则:30000到30999端口和21端口,就OK了!
在这里插入图片描述


http://chatgpt.dhexx.cn/article/TwBk7b8R.shtml

相关文章

FTP Entering Extended Passive Mode

目录 原因 两种方法解决,哪个行用哪种 方法一 方法二 原因 FTP的连接建立有两种模式PORT

ftp的passive模式

昨天调试了半天的ftp passive模式,记录一下 今天在一台测试服务器上搭建ftp,折腾了许久。 主要是不了解ftp的passive模式和port模式的区别。这里记录一下。 和passive模式对应的叫做port模式,也叫做standard模式,也叫主动模式。 每…

一篇文章彻底掌握 FTP 服务器的 ACTIVE 与 PASSIVE 工作模式

1 背景 某客户现场,每天都会批量生成大量 CSV 文件存放到 FTP 系统,这些 CSV 文件需要导入到大数据平台 HIVE 数仓中做后续离线分析,且 HIVE 数仓中的离线分析作业目前是使用 JENKINS 来调度的。 由于这些 CSV 文件是每天都会生成&#xff0c…

passive 的事件监听器

很久以前,addEventListener() 的参数约定是这样的: addEventListener(type, listener, useCapture) 后来,最后一个参数,也就是控制监听器是在捕获阶段执行还是在冒泡阶段执行的 useCapture 参数,变成了可选参数&…

强化学习之Passive learning求解 (1)

在MDP系列博客中,我们以一个Agent在4*3网格中寻找终点最优的路径策略为例,论述了MDP问题的原理和求解。有了MDP讲解作为基础之后,我们就可以正式的切入到“强化学习”的学习中来了。强化学习的目的是通过观测到的reward来为当前环境学习一个&…

【重要!!】passive优化页面性能

在js中给dom元素添加监听事件: let dom1document.getElementById("box1"); function box(that){console.log(that); } dom1.addEventListener("click",function(){box(1)});一般都是这样,但是还是有第三个参数,Boolean类…

Passive Event Listener

起源 最近打开项目随便点点,控制台就开始报警: Added non-passive event listener to a scroll-blocking ‘mousewheel’ event. Consider marking event handler as ‘passive’ to make the page more responsive 可以看到警告信息是element-ui和echa…

passive的作用和原理

passived到底有什么用? passived主要用于优化浏览器页面滚动的性能,让页面滚动更顺滑~~BetterScroll:可能是目前最好用的移动端滚动插件 passived产生的历史时间线 addEventListener():大家都是认识的,为dom添加触发…

Java并发编程—CompletableFuture的介绍和使用

在博主上一篇博客介绍中,Java并发编程—java异步Future的迭代过程_小魏快起床的博客-CSDN博客,这里面给大家分析了Future的使用过程和一些存在的问题,那么针对里面出现的阻塞问题,博主将在这一篇文章给大家介绍清楚 &#x1f34f…

Java8 CompletableFuture runAsync等使用学习总结 submit() execute()等

一般的 Executors 的 execute以及submit 并发包下 Executors 创建的线程存在 一个 execute(),以及三个 submit() 不同的是使用 execute() 执行的任务是没有返回值的,使用 submit() 则是存在返回值的,这与接下里要说的 CompletableFuture.run…

实现异步编程,这个工具类你得掌握!

前言 最近看公司代码,多线程编程用的比较多,其中有对CompletableFuture的使用,所以想写篇文章总结下 在日常的Java8项目开发中,CompletableFuture是很强大的并行开发工具,其语法贴近java8的语法风格,与st…

Java异步编程之CompletableFuture

异步任务 Future获取异步任务结果 利用 Java 并发包提供的 Future 可以很容易获得异步任务的执行结果,无论异步任务是通过线程池 ThreadPoolExecutor 执行的,还是通过手工创建子线程来执行的。利用多线程可以快速将一些串行的任务并行化,从而…

JUC异步编程

什么是JUC JUC的意思是java并发编程工具包,是java.util.concurrent包的简称。目的就是为了更好的支持高并发任务,让开发者利用这个包进行的多线程开发时,可以有效的减少竞争条件和死锁线程。 异步编程 模拟用户下单操作。。。 1、根据地址…

线程、多线程的使用、线程池、异步(CompletableFuture)-48

一:线程 1.初始化线程的四种方式 1)、继承 Thread public class ThreadTest {public static void main(String[] args) {System.out.println("main...start...");Thread01 thread new Thread01();//启动线程thread.start();System.out.pri…

CompletableFuture 执行异步任务

CompletableFuture 执行异步任务 参考: (10条消息) Java 8 的异步编程利器 CompletableFuture 真香!_不才陈某的博客-CSDN博客 提供几十种方法,帮助异步任务执行调用; 主要包括: 创建异步任务任务异步回调多个任务…

CompletableFuture实现异步编排全面分析和总结

一、🌈CompletableFuture简介 CompletableFuture结合了Future的优点,提供了非常强大的Future的扩展功能,可以帮助我们简化异步编程的复杂性,提供了函数式编程的能力,可以通过回调的方式处理计算结果,并且提…

【Java8新特性--->异步处理】CompletableFuture

一、引入 假设一个商品详情页需要以下操作: 查询展示商品的基本信息耗时:0.5s查询展示商品的销售信息耗时:0.7s查询展示商品的图片信息耗时:1s查询展示商品销售属性耗时:0.3s查询展示商品规格属性耗时:1.…

CompletableFuture API

目录 1. 为什么要用CompletableFuture1.1 API 2. CompletableFuture Demo1. 创建CompletableFuture2. 定义CompletableFuture完成时和异常时需要回调的实例3. CompletableFuture的优点 3. demo:多个CompletableFuture串行执行4. demo:多个CompletableFut…

CompletableFuture实战与分析

Future对于结果的获取不够好,只能通过阻塞或者轮询的方式得到任务的结果。在Java8中Doug Lea大师提供了一个CompletableFuture工具类,可以更优雅的对异步并行操作进行编排。 Future VS CompletableFuture CompletableFuture支持手动完成任务&#xff0…

Java8 CompletableFuture异步非阻塞做法

创建异步任务 Future.submit supplyAsync / runAsync 异步回调 thenApply / thenApplyAsync thenAccept / thenRun exceptionally whenComplete handle 组合处理 thenCombine / thenAcceptBoth / runAfterBoth applyToEither / acceptEither / runAfterEither thenCom…