apache-ftpserver快速入门(windows平台,被动模式)

介绍

apache-ftpserver是apache提供的开源ftp服务器

Mina

Apache FTPServer(也称为 Apache Mina FTPServer)是基于 Apache Mina(一个高性能的 Java NIO 框架)构建的 FTP/FTPS 服务器,具有高度的可扩展性和定制性。

特性

特性 描述
协议支持 支持标准 FTP、FTPS(SSL/TLS 加密)、SFTP(需额外扩展)
认证机制 支持匿名访问、文件/数据库/LDAP 认证、自定义认证插件
文件系统 支持本地文件系统、虚拟文件系统、内存文件系统
权限控制 细粒度的用户权限管理(上传/下载/删除/列表等)
扩展性 模块化设计,支持自定义命令、事件监听器、拦截器
平台兼容 跨平台运行(Windows/Linux/macOS),支持 Java 8+
管理功能 支持远程管理、日志记录、连接限制、带宽控制

架构组成

  • 核心模块:ftpserver-core - 提供 FTP 协议处理和服务器核心功能
  • 文件系统模块:ftpserver-filesystem - 提供文件系统抽象和实现
  • 认证模块:ftpserver-auth - 提供认证机制和用户管理
  • 扩展模块:ftpserver-extensions - 提供 SFTP、数据库集成等扩展功能

下载

https://mina.apache.org/ftpserver-project/download_1_2.html

使用

1、解压后随意放在一个目录,比如D盘根目录,该软件主目录大概就是D:\apache-ftpserver-1.0.3;

2、dos命令,进入主目录,执行 "bin/ftpd.bat" res/conf/ftpd-typical.xml,注意 bin/ftpd.bat 要加双引号,这样就 启动了一个可以使用的ftp服务器,其端口号为 2121,支持 admin 和 anonymous 两个用户。

服务器配置

ftpd-typical.xml

服务器配置在 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 https://mina.apache.org/ftpserver-project/ftpserver-1.0.xsd  
     "
  id="myServer"
  max-logins="50"       
  anon-enabled="true" 
  max-anon-logins="50"  
  max-login-failures="3"  
  login-failure-delay="30000"
  >
  <!-- id 设置server的标志符,必须 -->
  <!-- max-logins 设置同时登陆的最大人数 -->
  <!-- anon-enabled="false"  设置匿名登陆为不允许 -->
  <!-- max-anon-logins 设置匿名登陆用户为允许数量 -->
  <!-- max-login-failures 设置3次失败登陆后,关闭此链接 -->
  <!-- login-failure-delay 设置失败登陆后下一次登陆所需的时间间隔,防止暴力破解,单位是微秒 -->
  <listeners>
    <nio-listener name="default" port="2121">
        <ssl>
            <keystore file="./res/ftpserver.jks" password="password" />
        </ssl>
        <data-connection idle-timeout="60" /><!-- 设置多少时间后关闭一个闲置的链接,单位是秒 -->
    </nio-listener>
  </listeners>
  <!-- 设置用户登陆配置文件路径,“encrypt-passwords=‘clear’”设置密码加密方式,默认是“MD5”,设置成“clear”表示不加密,直接输入-->
  <file-user-manager file="./res/conf/users.properties" encrypt-passwords="clear"/>
</server>

参考:https://blog.csdn.net/dapao123456789/article/details/45311941

用户密码为明文

在 ftpd-typical.xml 文件中将

<file-user-manager file="./res/conf/users.properties"/>

改为

<file-user-manager file="./res/conf/users.properties" encrypt-passwords="clear"/>

让外网能够访问

需要用 ### 让外网能够访问

需要用被动模式,配置如下:

<listeners>
        <nio-listener name="default" port="2121">
            <ssl>
                <keystore file="./res/ftpserver.jks" password="password" />
            </ssl>
            <data-connection idle-timeout="60">
                <!-- 设置被动链接配置,端口设置为“2122-2140” -->
                <!-- address="0.0.0.0",本机ip -->
                <!-- 扩展地址为“59.110.152.54”,当需要访问的服务器返回外网地址时使用 -->
                <passive ports="2122-2140" address="0.0.0.0" external-address="59.110.152.54" />
            </data-connection>
        </nio-listener>
    </listeners>

ports:是被动模式数据传输端口范围,注意防火墙要让其访问
address:外网ip,配置如下:

<listeners>
        <nio-listener name="default" port="2121">
            <ssl>
                <keystore file="./res/ftpserver.jks" password="password" />
            </ssl>
            <data-connection idle-timeout="60">
                <passive ports="2122-2140" external-address="59.110.152.54" />
            </data-connection>
        </nio-listener>
    </listeners>

ports:是被动模式数据传输端口范围,注意防火墙要让其访问
address:外网ip

用户操作

user.properties 配置文件

查看 ftpd-typical.xml 发现用户配置信息出自同目录下的user.properties。该文件定义了用户的相关属性,除了密码属性外,其余的都可以手动修改。

用户配置信息在同目录下的 user.properties 文件中

#密码为空
tpserver.user.anonymous.userpassword=
#主目录
ftpserver.user.anonymous.homedirectory=./res/home
#当前用户可用
ftpserver.user.anonymous.enableflag=true
#具有上传权限
ftpserver.user.anonymous.writepermission=true
#最大登陆用户数为20
ftpserver.user.anonymous.maxloginnumber=20
#同IP登陆用户数为2
ftpserver.user.anonymous.maxloginperip=2
#空闲时间为300秒
ftpserver.user.anonymous.idletime=300
#上传速率限制为48字节每秒
ftpserver.user.anonymous.uploadrate=4800
#下载速率限制为48字节每秒
ftpserver.user.anonymous.downloadrate=4800

删除用户

将 user.properties 配置中的 enableflag 设置为 false 或者直接删除该用户的所有配置既可

修改用户

可以直接编辑 user.properties 文件,如果需要修改密码,可以先删除用户,再新建一个同名用户。


原文出处:/show_1C7ZeGpb6P0.html