客户端FTPClient连接时报错:

>2018-04-18 14:43:47,981 [main] ERROR com.test.ftpclient.FTPClientUtil - 无法连接至指定FTP服务器
java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method) ~[na:1.8.0_77]
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) ~[na:1.8.0_77]
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_77]
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_77]
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_77]
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) ~[na:1.8.0_77]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_77]
at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_77]
at org.apache.commons.net.SocketClient.connect(SocketClient.java:182) ~[commons-net-3.3.jar:3.3]
at org.apache.commons.net.SocketClient.connect(SocketClient.java:203) ~[commons-net-3.3.jar:3.3]
at com.test.ftpclient.FTPClientUtil.<init>(FTPClientUtil.java:43) ~[ftp-test.jar:na]
at com.test.ftpclient.FtpMain.main(FtpMain.java:29) [ftp-test.jar:na]

服务端ftp日志显示:远程主机强迫关闭了一个现有的连接。

经过查找资料发现:ftp连接时主动模式与被动模式的区别

参考:ftp的主动模式active mode和被动模式 passive mode的配置和区别

结论:passive模式

服务端开启>1024端口等待客户端连接, 进行数据传输

active 模式:

服务端通过20端口(默认20,可以设置为其他端口)主动连接客户端>1024端口, 进行数据传输

回归前面的问题,客户端使用被动模式连接ftp,而服务端部署在阿里云上,端口只开了几个(21、80、3389等),所以此时客户端不能连接其他>1024的端口进行数据传输,所以在建立连接时报错。而此时将连接模式改为主动模式就可以成功上传文件(此时服务端20端口没有配置使用,猜测可能是服务端主动连接客户端,不存在aliyun入方向端口启用问题)

本次使用的Apache FtpServer,具体配置可修改配置ftpd-typical.xml

<server xmlns="http://mina.apache.org/ftpserver/spring/v1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
   http://mina.apache.org/ftpserver/spring/v1 http://mina.apache.org/ftpserver/ftpserver-1.0.xsd
   "
id="myServer"        /*设置server的标志符,必须*/
max-logins="5"       /*设置同时登陆的最大人数*/
        anon-enabled="false" /*设置匿名登陆为不允许*/
        max-anon-logins="0"  /*设置匿名登陆用户为0个*/
        max-login-failures="3"  /*设置3次失败登陆后,关闭此链接*/
        login-failure-delay="30000"/*设置失败登陆后下一次登陆所需的时间间隔,防止暴力破解,单位是微秒*/
>
<listeners>
           <nio-listener name="default" port="2121"><!--设置默认的链接端口为2121,必须-->
<ssl>
                    <keystore file="./res/ftpserver.jks" password="password" /><!--设置密钥存储路径和密钥存储密码,必须-->
                </ssl>
    <data-connection idle-timeout="60"><!--设置多少时间后关闭一个闲置的链接,单位是秒-->
<active local-port="1886"/><!--设置主动链接配置,端口号“1886”默认端口20-->
<!--设置被动链接配置,端口设置为“1886”,也可以设置IP段“3001-3010”,扩展地址为“137.222.18.114”,当需要访问的服务器返回外网地址时使用-->
<passive ports="1886" address="0.0.0.0" external-address="137.222.18.114"/>
    </data-connection>
</nio-listener>
</listeners>
<!--设置用户登陆信息,“./res/conf/users.properties”为文件路径,“encrypt-passwords=‘clear’”设置密码加密方式,默认是“MD5”,设置成“clear”表示不加密,直接输入-->
<file-user-manager file="./res/conf/users.properties" encrypt-passwords="clear"/>

</server>

设置被动模式下服务器随机开启端口的范围,然后将IP段加入aliyun入站规则中,就可以正常使用被动模式连接ftp了。

而服务端报错是在连接ftp结束时未正常0关闭连接,客户端数据传输结束,服务端强制释放此连接。

ftp连接服务器出现的问题(主动模式与被动模式)相关推荐

  1. FTP服务器搭建下的主动模式和被动模式

    今天心血来潮,研究了下ftp协议,在linux搭建了一个ftp服务器,主要是研究下ftp的主动和被动模式. 简单的说下ftp安装配置吧 ftp服务器:192.168.3.14 linux vsftpd ...

  2. java ftp pasv_Ftp主动模式和被动模式以及java连接ftp模式设置

    FTP的主动模式与被动模式 FTP服务器使用20和21两个网络端口与FTP客户端进行通信. FTP服务器的21端口用于传输FTP的控制命令,20端口用于传输文件数据. FTP主动模式: FTP客户端向 ...

  3. FTP的控制连接和数据连接分别是做什么的?主动模式和被动模式有什么区别?

    你知道FTP的控制连接和数据连接分别是做什么的吗? 你知道FTP的主动模式和被动模式有什么区别吗? 你知道实际工作中,会使用主动FTP还是被动FTP吗?又是为什么呢? 一. FTP的两种连接 FTP( ...

  4. FTP的主动模式和被动模式,你应该用那种?

    2019独角兽企业重金招聘Python工程师标准>>> FTP文件传输分为两种模式,主动(PORT)模式和被动(Passive)模式,用户应该用哪种? 简单粗暴,直接上答案 1)如果 ...

  5. FTP主动模式及被动模式

    FTP的特殊性: 大多数的TCP服务是使用单个的连接,一般是客户向服务器的一个周知端口发起连接,然后使用这个连接进行通讯.但是,FTP协议却有所不同,它使用双向的多个连接,而且使用的端口很难预计.一般 ...

  6. FTP的主动模式和被动模式

    1.1 PORT(主动模式) 在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,发送FTP用户名和密码,然后开放N+1号端口进行监听,并向服务器发出PORT N+ ...

  7. java ftp 被动模式_ftp 主动模式与被动模式

    ftp 主动模式与被动模式 2018-09-15 ftp的工作原理 ftp要用到两个tcp连接即要使用两个端口 一个是命令链路:用来传递命令 一个是数据链路:用来上传下载数据 连接ftp server ...

  8. java ftp主动模式和被动模式_什么是ftp主动模式和被动模式

    FTP是文件传输协议的简称,ftp传输协议有着众多的优点所以传输文件时使用ftp协议的软件很多,ftp协议使用的端口是21(也称为控制端口),其实还有一个数据端口20,根据FTP工作方式的不同,数据端 ...

  9. FTP主动模式和被动模式讲解

    主动模式FTP与被动模式FTP该如何选择 无论是主动模式还是被动模式,其要进行文件传输都必须依次建立两个连接,分别为命令连接与数据连结.而主动模式与被动模式的差异主要体现在数据连结通道上.为了说明两者 ...

最新文章

  1. UML应用开发详解--视频
  2. 程序员应知——学习、思考与分享
  3. 【设计模式】建造者模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )
  4. yum 方式安装nginx
  5. mysql date类型加一个月jdbc_JDBC操作数据库Date类型数据
  6. uboot的常用命令详解
  7. mysql 导入dbm文件_DBM数据导入到mysql数据库方法
  8. 【树莓派学习笔记】七、(免费)内网穿透将树莓派作为服务器管理网站
  9. Non-resolvable parent POM for com.supermarket:supermarket:0.0.1-SNAPSHOT: Could not transfer artifac
  10. 荷兰搞定原子级数据存储:1平方英寸500TB
  11. 1.3 线性回归的sklearn实现
  12. 【A little interesting】LeetCode 437. Path Sum III
  13. ASP.NET MVC REST API 应用实例
  14. python读取文件中的内容_python逐行读取文件内容的三种方法
  15. Linux C程序实现查看文件夹大小
  16. 微信公众号模板用postman消息接口返回40008
  17. python中逗号在print的作用_Python中逗号的三种作用
  18. iis6 增加PHP+MYSQL等时,记得 PHP目录要给EVERYONE权限
  19. 计算机网络原理 谢希仁(第8版)第三章习题答案
  20. 算法设计(Jon Kleinberg等著) 笔记 1. 一些算法问题

热门文章

  1. 净利润同比下滑26%,亚马逊朝万亿市值越“跑”越遥远?
  2. stata面板数据gmm回归_动态面板数据的System-GMM回归分析步骤
  3. 2023 APP群聊私聊朋友圈 即时通讯聊天系统四合一源码
  4. Azkaban登录分析
  5. Pomelo Connector
  6. SQL数据属性的修改方法
  7. 淘宝/天猫按图搜索淘宝商品(拍立淘) API 返回值说明
  8. 高通SDX12:小网SIM卡QMI拨号无法获取IPv6地址问题的分析
  9. mysql的内存数据库_内存数据库
  10. 关于《下班时间到,是否可以立即离开工作岗位》的个人观点