FileZilla Server超详细配置

  • 前言
  • 一、配置教程
    • 1、General settings(常规设置)
    • 2、Passive mode settings(被动传输模式设置)
    • 3、Security settings(安全设置)
    • 4、miscellaneous:杂项设置
    • 5、 Admin Interface setting(管理员界面设定)
    • 6、Logging(日志)
    • 7、Speed Limits(速度限制)
    • 8、Filetransfer compression(文件传输压缩设置)
    • 9、设置“SSL/TLS settings”
    • 10、Autoban
    • 11、匿名FTP配置
    • 12、标准FTP用户配置
  • 二、注意事项(填坑)
    • 1.主动传输模式
    • 2.被动传输模式(重点)
  • 三、ftp服务端-python程序实现
  • 总结

前言

FileZilla Server下载安装完成后,必须启动软件进行设置,由于此软件是英文,本来就是一款陌生的软件,再加上英文(配置难度可想而知,笔者从网上找到一篇非常详细的教程进行整理了一番,确保读者能够进行免费ftp服务器FileZilla Server配置

一、配置教程


FileZilla Server启动界面

运行FileZilla Server Interface.exe,得到以上界面,如果是第一次进入,直接点击ok即可。我们可以在「Administrator password:」栏位中输入本服务器Filezilla服务的密码,输入管理端口号(管理端口到底是多少,请参考前文安装过程中填写的具体数字是多少。),然后勾选「Always connect to this server」再按下〔OK〕。建议选中“总是连接到本服务器”的选项,即表示每次启动管理控制台,都是管理本机的Filezilla服务。

注意:修改端口和密码非常重要,这是确保Filezilla安全的重点,必须修改端口,必须设置密码!密码建议足够复杂!可以在管理界面中进行修改
FileZilla Server主界面

这是程序的主界面,然后开始点击Edit菜单下的Settings.会得到如下界面:
首先要进行服务器全局参数设置:

1、General settings(常规设置)

Listen on Port:监听端口,其实就是FTP服务器的连接端口。(一般都是21)
Max.Number of users:允许最大并发连接客户端的数量。(0为不限制)
Number of Threads:处理线程。也就是CPU优先级别。数值调得越大优先级越高,一般默认即可。
下面的是超时设置,
Connections timeout:连接超时时间;此处默认是120秒。
No Transfer timeout:传输空闲超时;此处默认是600秒。
Login timeout:登入超时。此处是60秒。

FileZilla Server全局参数设置

1.1、Welcome message:页面设置客户端登录成功以后显示的Welcome信息。
FileZilla Server配置的欢迎信息
1.2、IP bindings(IP绑定)页面:把服务器与IP地址绑定,使用*以绑定到所有地址。(一般默认即可)

FileZilla Server配置绑定IP
1.3、IP Filter(IP过滤器)页面:设置IP过滤规则,在上面栏目中的IP是被禁止与FTP服务器连接的,下面的是允许的。
格式:可以是单个IP地址、IP地址段,可以使用通配符、使用IP/subnet语法或正则表达式(以“/”结尾)来过滤主机名。
(一般默认即可,除非有需要的话再来进行设置)

FileZilla Server配置过滤ip

2、Passive mode settings(被动传输模式设置)

这个页面要重点关注。

先修改Use custom port range:小编此处选择的从21212-21312.此处根据自己需要选择。(服务器后台需要开放对应的端口)如我的(我为ftp服务端开放的所有端口):

下面是被动传输设置:

1.如果服务器本身直接拥有公网IP,可以选软件默认的“Default”。

2.如果服务器是在局域网里面,在一个网关后面,那么就要选择第二项“Use the follwoing IP”,并且在下面的输入栏填写公网的IP地址;否则,客户端用PASV被动模式可能无法连接FTP服务器。因为服务器是在内网中,在客户端使用PASV模式连接服务器的时候,服务器收到连接请求之后需要把自身的IP地址告诉客户端,由于服务器在内网中,它侦测到的IP地址是内网的(如192.168.0.5),它把这个IP地址交给客户端,客户端自然无法连接。在这里设置了指定的IP地址后,服务器就会把这个公网合法的IP地址提交给客户端,这样才能正常建立连接。如果服务器是动态IP的,那么可以选择下面的“Retrieve external IP address from”,利用FileZilla官方网站免费提供的IP查询页面获取当时的公网合法IP,然后服务器把这个公网合法IP地址提交给客户端。当然静态IP也可以用这个,只不过没有必要。

这个设置页面对服务器位于内网的情况非常重要。有些FTP服务器端没有这个设置项目,客户端就只能用Port主动模式连接。当然有些客户端软件针对这个问题有专门的设置,如FlashFXP的站点设置中只要选中“被动模式使用站点IP”就可以了。

对于在局域网中的服务器,如果服务器没有置于DMZ区,那么强烈建议选中下面的“Use custom port range”定义PASV端口范围。由于PASV模式中,是服务器随机打开端口,然后把打开的端口号告诉客户端,让客户端连接打开的端口。但是因为服务器处于网关后面,如果网关那里没有做对应的端口映射,客户端从外网就无法连接服务器打开的端口,导致PASV模式连接失败。在这里限定服务器打开的端口范围,然后到连接外网的网关那里,对服务器的这些端口做端口映射(虚拟服务)。这需要服务器和Internet网关设备配合设置,这样外网的客户端才能用PASV模式连接进来。

3、Security settings(安全设置)

这里的两个选项关系到能否FXP。软件默认状态“Block incoming server-to-server transfers”和“Block outgoing server-to-server transfers”两项都是选中的,前面那项是禁止连入的服务器对传,后面是禁止传出的服务器对传。也就是说默认状态不允许FXP,如果需要使用FXP,那么就把这两个项目取消选择。注意FXP传输除了跟这个页面的设置有关,还跟IP过滤器有关。

说明:如果启用,IP过滤器在传输开始时检查远端IP,如果IP不符合控制通道中的远端IP,传输将被取消。FXP经常被用来传输非法盗版软件,反弹攻击亦可被用来发起对服务器的Dos攻击,因为恶意用户可以发起多个服务器到服务器传输,这将对服务器的带宽和可用性造成很大影响。如果设置了严格过滤IP,整个IP将与控制通道中的IP进行比较,但此选项可能会对使用了多个IP的代理服务器引发问题。为了避免此问题,可以禁用严格IP过滤,这样只检查IP地址的前三部分,但这会使对FXP/反弹攻击的安全都降低。因此,你需要在安全和兼容性之间做选择,要想达到最佳效果,你可以阻止所有的FXP传输并且仅对传入的传输启用严格过滤。

4、miscellaneous:杂项设置


默认即可。

5、 Admin Interface setting(管理员界面设定)

这个就是登录配置服务器界面的一些参数。端口号的设置在安装的时候也出现过。下面两栏可以定义允许远程登录配置的网络界面和IP地址,第一个空白可以设置把管理界面绑定到IP地址,使用以绑定所有IP地址,127.0.0.1是默认绑定,它一直存在且不可被移除;第二个空白设置允许连接到管理界面的IP地址,可以使用通配符(例如:123.234.12?.),127.0.0.1总是被允许连接到管理界面的。在最下面更改管理员口令。

注意:修改端口和密码非常重要,这是确保Filezilla安全的重点,必须修改端口,必须设置密码!密码建议足够复杂!

6、Logging(日志)

:设定是否启用日志记录功能以及日志文件大小和文件名。

7、Speed Limits(速度限制)

这个是全局参数,默认状态不限速。可以选中“Constant Speed Limit of”并填写限速数值来实现速度限制,下载(传出)和上传(传入)可以分别设置。还可以根据时段自定义限速规则——“Use Speed Limit Rules”,比如这台服务器或者网络连接除了做FTP服务器之外还有别的用途,需要根据时间调度,不能让FTP传输挤占所有网络带宽影响其它的网络服务;就可以通过这里设置。

FileZilla Server速度限制

8、Filetransfer compression(文件传输压缩设置)

MODE Z FTP协议是一种实时压缩的传输协议。在这种模式下,发送方的数据在发出之前先进行压缩,再送到网络链路中传输,接收方将收到数据实时解包,在本地还原重组成原文件。这种模式可以大幅度减少网络中的数据流量,提升传输效率(速度)。当然对于已经压缩过的文件,就几乎没有效果了。要使用这种传输模式,需要服务器端和客户端都支持MODE Z协议。

FileZilla Server文件传输压缩设置

勾选“Enable MODE Z support”就可以启用本服务器的MODE Z支持功能,这样,只要客户端也支持MODE Z就可以获得它带来的性能提升。“Minimum allowed compression level”和“Maximum allowed compression level”分别设置最小压缩率和最大压缩率。最下面可以输入不启用MODE Z功能的目标IP。

9、设置“SSL/TLS settings”

:安全套接层协议设置
FileZilla Server配置ssl/tls

选中“Enable FTP over SSL/TLS support(FTPS)”进行公钥私钥的设置:
FileZilla Server配置ssl

10、Autoban

:自动断开
FileZilla Server配置勾选是否一小时之内允许重复10次失败尝试。

11、匿名FTP配置

1.首先打开管理控制台,点击左起第四个图标 进入系统设置。

2.打开ftp用户管理界面,点击右侧的 add按钮,添加新用户。

3.在新增用户的对话框中,输入“anonymous”这个名字,即FTP的匿名用户。

4.点击确认,添加用户完成,返回用户管理界面。

5.点击左侧的“Shared folders”菜单。点击Add按钮,添加一个目录。

6.打开浏览文件夹的选项,选择要设置FTP的目录。

7.点击确定,添加用户完成。
现在用户FTP客户端连接到FileZilla Server上,可以看到匿名FTP已经配置完成。

12、标准FTP用户配置

设定流程:开新帐户→ 设定密码→ 选定资料夹→ 设定完成。

第1步 进行的是用户组(Group Settings)设置。在主界面点击第五个按钮或者由“Edit”——“Groups”菜单进入。(组设置是为了便于用户归类管理,相同权限的用户归属到同一个组里面,这样就不用重复多次设置每个用户的权限等参数,简化配置和管理工作。点击右边的“Add”按钮创建新组。)
FileZilla Server配置组用户

组创建完成以后,点“Shared folders”进入目录权限设置页面。点击中间区域的“Add”按钮添加目录。默认状态添加的第一个目录即为该组用户登录之后看到的主目录(Home Directory),主目录前面有个粗体的“H”标识。目录列表右侧分别是对该目录的操作权限设置,上面是文件权限设置,下面是目录权限设置。如果要改变主目录,只要在列表中选中需要设置为主目录的那个,然后点击“Set as home dir”按钮即可。

这里的虚拟目录设置请参考本站的另外一篇教程,非常详细,点击前往:FileZilla Server设置虚拟目录
FileZilla Server增加用户配置目录

设置好主目录之后,再点击“Add”按钮把其余的目录依次设置进来就可以了。不过这里得注意,如果仅仅把别的目录添加进去,那么你用客户端连接之后,会发现除了主目录和它的子目录之外,别的目录都看不见。这是怎么回事?这里要说明一个概念——虚拟路径。所谓虚拟路径,就是在客户端看到的目录结构。由于一个用户只能有一个主目录,别的目录如果不映射成虚拟目录的话,客户端将看不到它。所以只有把除了主目录之外的其它目录,虚拟成主目录的子目录,这样在客户端才能看到。

比如本例,主目录是D:\Downloads,如果不做虚拟路径设置,那么客户端登录进来只能看到主目录里面的内容,还有一个E:\FTPRoot目录下面的东西看不到。如何设置虚拟路径?鼠标右键点击列表中的“E:\FTPRoot”目录,在弹出的菜单里面选“Edit aliases”编辑别名;现在要把E:\FTPRoot目录作为客户端主目录下的FTPRoot目录,那么就在弹出的窗口里面输入“D:\Downloads\FTPRoot”并点击“OK”按钮确定。注意拼写规则,路径的前面部分必须是主目录的绝对路径。这样设置之后,在客户端就可以看到一个“FTPRoot”目录,这个目录其实就是E:\FTPRoot目录。

组设置中的“Speed Limits”和“IP Filter”跟全局设置里面的速度限制和IP过滤器设置方法是一样的,请参照前面的内容。只不过这个是仅仅针对这个组的用户生效。而全局设置是对所有的用户都生效。设置完毕之后点击“OK”按钮回到主界面。
权限说明:

文件:

Files → Read:可下载档桉。

Files → Write:可上传档桉。

Files → Delete:可删除档桉。

Files → Append:即把文件下载到本地副本并打开编辑,在关闭时再上传到服务器。(问题:不知道是不是在服务器端进行执行编辑。)

目录:

Directories → Creat:可新增子资料夹。

Directories → Delete:可删除子资料夹。

Directories → List:可列出资料夹中的档桉。

Directories → +subdirs:列出文件夹中的子文件夹。

注意:在FileZilla Server里设置的对文件、目录的权限,需要依赖Windows操作系统中SYSTEM帐号对文件、目录的权限设置。

第2步 设置用户(Users)。点击主界面第四个按钮或者由“Edit”——“Users”菜单进入。点击右边的“Add”按钮创建用户,输入用户名test 。选中Password前边的多选框,然后输入密码123456。
FileZilla Server设置用户

然后从“Group membership”栏选择该用户所属的组(Group),这样该用户将继承该组的所有属性/权限,不用再单独一一设置这些参数了。这也是设置组体现的方便性,在用户比较多的时候使用组来分类会使得管理工作更加方便、高效。当然,也可以设置一个不属于任何组的用户,这样的话,就得单独定制该用户的权限。对于少量特殊用户,可以用这种方式设置。返回到用户管理界面,点击设置文件夹目录,点击Add添加目录。添加完成,再右侧选中test用户对这个目录的权限,然后点击左侧的OK按钮,配置完成。

现在可以在网页中输入ftp://ip访问来测试登录了。

二、注意事项(填坑)

1.主动传输模式

在主动模式的 FTP 中,客户端从一个随机的非系统端口(N > 1023)连接到 FTP 服务器的命令端口端口 21。然后,客户端开始监听端口 N+1,并将 FTP 命令端口 N+1 告诉 FTP 服务器,“请把数据发送给我的 N+1 端口”。然后,服务器将从本地数据端口 (端口20) 连接回客户端的数据端口,也就是 N+1 端口。

因为服务器防火墙的隔离作用,我们应该确保服务器 FTP 到客户端的以下几个通道的畅通:
FTP 服务器端口 21 (接受全部客户端)
FTP 服务器端口 21 到 > 1023 的端口 ( 服务器响应客户端控制端口 )
FTP 服务器端口 20 到 > 1023 的端口 ( 服务器发起到客户端的数据端口的连接 )
从 > 1023的端口到 FTP 服务器端口 20 ( 客户端发送 ack 到服务器的数据端口 )
重点:主动模式的 FTP 主要问题实际上落在客户端。FTP 的客户端并不会主动连接到服务器的数据端口,而是是告诉服务器它正在监听哪个端口,然后服务器发起连接到客户端上指定的端口。但是,这样的连接有时候会被客户端的防火墙阻止。

2.被动传输模式(重点)

为了解决服务器主动发起到客户端连接会被阻止的问题,另一种更完善的工作模式出现了,它就是 FTP 的被动模式,缩写作 PASV,它工作的前提是客户端明确告知 FTP 服务器它使用被动模式。
在被动模式的 FTP 中,客户端启动到服务器的两个连接,解决了防火墙阻止从服务器到客户端的传入数据端口连接的问题。FTP 连接建立后,客户端在本地打开两个随机的非系统端口 N 和 N + 1(N > 1023)。第一个端口连接服务器上的 21 端口,但是客户端这次将会发出 PASV 命令,也就是不允许服务器连接回其数据端口。这样,服务器随后会打开一个随机的非系统端口 P (P > 1023),并将 P 发送给客户端作为 PASV 命令的响应。然后客户端启动从端口 N+1 到端口 P 的连接来传输数据。
在被动模式中,要保持一下通道的畅通:
FTP服务器的 21 端口(接受所有客户端)
FTP服务器的 21端口到 > 1023 的远程端口 ( 服务器响应客户端控制端口 )
FTP服务器 > 1023 的端口(接受所有客户端发起的连接到服务器指定的随机端口)
FTP服务器 > 1023 的端口到 > 1023 的远程端口(服务器发送 ack 和数据到客户端数据端口)
重点:实现ftp传输的配置上主要在服务端,不要求客服端开放端口,服务器防火墙需要给 FTP 的被动模式开放一个端口范围允许所有客户端连接,比如 5000 - 6000。

所以现在市面上几乎全都是被动传输模式,这样就只需要把服务端做好配置就好,而不要求客服端去做任何配置。

三、ftp服务端-python程序实现

1、引入包pyftpdlib(pip install pyftpdlib)
ftp代码:

# -*- coding:utf-8 -*-
from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers  import FTPHandler
from pyftpdlib.servers import FTPServer
# 实例化DummyAuthorizer来创建ftp用户
authorizer = DummyAuthorizer()
# 参数:用户名,密码,目录,权限
authorizer.add_user('admin', '12345', r'C:\Program Files (x86)\FTPData\clothCheckFile', perm='elradfmwMT')
# E:\project_code\ftp\ftpmyserver\File
# 匿名登录
# authorizer.add_anonymous('/home/nobody')
handler = FTPHandler
handler.authorizer = authorizer# #添加被动端口范围
handler.passive_ports = range(21212, 21312)# 参数:IP,端口,handler
server = FTPServer(('0.0.0.0', 21), handler)           #设置为0.0.0.0为本机的IP地址
server.serve_forever()

记得被动模式要开放端口,公网才能访问服务器

总结

以上就是服务器配置公网ftp服务端的所有内容,这样任何一台电脑都可以通过浏览器访问ftp://ip/(ip为服务端ip地址)去访问自己的ftp服务端了。不推荐使用程序去实现服务端ftp,推荐使用FileZilla Server,它是封装好的免费软件,还可以加用户和访问目录、权限等。

服务器配置公网ftp服务端(软件和python代码两种方法)相关推荐

  1. 怎么卸载手机上下载的软件?苹果手机有两种方法

    怎么卸载手机上下载的软件?很多人会在手机上下载各种各样的软件,时间一长,小内存的手机无法储存这么多内容,建议大家定期将不需要的软件直接卸载,避免占用空间影响手机的使用.今天给大家分享一下卸载手机软件的 ...

  2. python分析数据差异的方法_用Python的两种方法进行方差分析

    在进行数据分析时,我们往往会遇到要对某个变量的影响因素进行分析的情况,而影响一事物的因素往往是很多的.比如在化工生产中,有温度.压力.剂量.反应时间等因素.每一因素的改变都有可能影响产品的数量和质量. ...

  3. 用ChatGPT处理word表格数据:直接采用ChatGPt和利用ChatGPT编写python脚本两种方法

    目录 摘要 0. 测试数据生成 1. 直接使用ChatGPT进行处理. 2 使用ChatGPT生成python脚本进行处理 3对比分析 4 结束语 摘要 为测试ChatGP在word文档表格的处理能力 ...

  4. Ubuntu手工进行软件更新升级的两种方法

     上一篇文章说了Ubuntu系统自动更新的配置,它适合于经常更新或者干脆不更新的情况,还有一种情况就是偶尔需要更新,也就是根据需要手工更新系统或软件包.  这有两种方法,一种是图形界面的方法,一种是命 ...

  5. python快速排序 -两种方法

    python 快速排序 使用python实现快速排序 方法一 方法二 使用python实现快速排序 快速排序,⼜称划分交换排序 1.通过⼀趟排序将要排序的数据分割成独⽴的两部分, 其中⼀部分的所有数据 ...

  6. yum只下载软件不安装的两种方法

    2019独角兽企业重金招聘Python工程师标准>>> 今天来说下在CentOS下下载软件,不安装的方法: 方法一:通过yum自带一个工具:yumdownloader [root@w ...

  7. win10必须禁用的服务_WIN10关闭自动更新的两种方法

    彻底关闭win10自动更新 背景 使用win10系统的朋友应该相对清楚,win10系统通常可以从系统接收系统更新补丁.尽管这可以在一定程度上维护win10系统的安全性,但并不是每个用户都喜欢频繁地更新 ...

  8. linux yum下载不安装,【APP】yum只下载软件不安装的两种方法

    今天来说下在centos下下载软件,不安装的方法: 方法一:通过yum自带一个工具:yumdownloader [root@web1 ~]#  rpm -qa |grep yum-utils [roo ...

  9. 移动端真机调试的两种方法

    本文参考https://github.com/YvetteLau/Blog/issues/5 1.引入: 我们进行移动web开发时常常会接触到真机调试,但是手机端的浏览器却不想PC端这样有开发人员工具 ...

最新文章

  1. 中国百万美元富翁财富
  2. 关于redis的几件小事(一)redis的使用目的与问题
  3. Android EditText
  4. UA MATH571A R语言回归分析实践 多元回归1 医疗费用的决定
  5. 匿名电子病例信息不全?深度学习能更好的判断出种族(代码开源)
  6. python拼接字符串的方法_python—字符串拼接三种方法
  7. c#使用正则表达式获取TR中的多个TD_PHP正则表达式技术心得与使用技巧完全详解 第3节...
  8. 检测系列--YOLO系列
  9. 基于SSM的MSDN资源发布网站
  10. (转)思科VPP源码分析(dpdk node分析)
  11. 顶尖互联网公司 类名定义/数据库字段 - 英文名词解释
  12. JVAV SE学习总结(01)
  13. 导航路径规划之四 路径规划概述
  14. 升级Unity2018.3.2f1出现PrecompiledAssemblyException: Multiple precompiled assemblies with the same name
  15. 这就是搜索引擎_这就是搜索引擎如何增强种族主义
  16. 独上高楼望尽天涯路——以博客记录分享学习成长
  17. MySql 系列三:事务
  18. 企业微信添加root主动发布消息
  19. 产品项目分析之竞品分析
  20. N3-PEG3-NH2,Azide-PEG3-Amino,134179-38-7,叠氮-三聚乙二醇-氨基

热门文章

  1. 开放式漏洞评估语言(OVAL)概述
  2. 问道手游服务器维护,问道手游停服维护公告
  3. 书单标签:IT技术 - 酷瓜书单
  4. Webplus网站群管理平台介绍
  5. Linux设置支持中文
  6. 对接IronSource广告(视频)
  7. fprintf与fscanf
  8. crtsiii型无砟轨道板_北京雄安城际全线轨道贯通:全程设5座车站,1小时通勤,“刷脸”进站...
  9. 解决** WARNING ** : Your ApplicationContext is unlikely to start due to a @ComponentScan of the defau
  10. 刺激战场国际服至暗之夜僵尸模式通关技巧:不用卡点也可以?