欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

Filezilla server配置FTP服务器中的各种问题与解决方法

程序员文章站 2022-06-27 18:30:33
公司很多资料需要通过ftp上传,那么就需要配置一个ftp服务器,找了一台windows服务器捣鼓,开始按网上教程自己配置特别麻烦,何西西说用filezilla比较方便,就去filezilla官网下载了...

公司很多资料需要通过ftp上传,那么就需要配置一个ftp服务器,找了一台windows服务器捣鼓,开始按网上教程自己配置特别麻烦,何西西说用filezilla比较方便,就去filezilla官网下载了filezilla server,本来以为会很轻松搞定,没想到还是碰到一堆坑,记录下来方便以后查阅。

服务器:windows web server 2008 r2,64位

坑1:安装filezilla server报错 "could not load tls network. aborting start of administration interface"

原因:根据这个filezilla forums里这个帖子https://forum.filezilla-project.org/viewtopic.php?t=39838讨论的,服务器没装补丁kb2533623。

出坑:去微软官网下载补丁,根据自己服务器型号选,我选了update for windows server 2008 r2 x64 edition (kb2533623),补丁装好以后安装server不再报错。

坑2:打开filezilla以后面板里红字显示"ftp over tls is not enabled, users cannot securely"

原因:未启用tls模式。

出坑:

打开settings

Filezilla server配置FTP服务器中的各种问题与解决方法

选ftp over tls settings,勾选enable ftp over tls support,然后点击中间generate new certificate...按钮

Filezilla server配置FTP服务器中的各种问题与解决方法

空白处都可以随便填,注意common name (server address)那里填127.0.0.1就行了,下面给密钥和证书选一个保存的位置,然后点最下方generate certificate

Filezilla server配置FTP服务器中的各种问题与解决方法

然后在key password填个密钥密码,随便填一个用不到的,最后点击左下ok,再打开filezilla就不会有错误提示啦~~

Filezilla server配置FTP服务器中的各种问题与解决方法

上面两个坑解决以后,就可以按照网上各种教程添加用户,分配文件夹访问权限了,基本配置参考《filezilla怎么用 filezilla配置ftp服务图文详解》,settings里每一项的具体作用参考《免费ftp服务器filezilla server配置》,大部分都默认设置就行了。

坑3:服务器本地可以访问ftp,其他机器访问连输用户名和密码的界面都弹不出

原因:防火墙封住了服务器上ftp的入站端口,这种情况下filezilla里连有人请求连接的信息都看不到。

出坑:

打开“高级安全windows防火墙”

Filezilla server配置FTP服务器中的各种问题与解决方法

右击“入站规则”,点击“新建规则”

Filezilla server配置FTP服务器中的各种问题与解决方法

选择“端口”,选择“tcp”,输入ftp端口,如果之前配置filezilla时没有改过,就用默认端口21

Filezilla server配置FTP服务器中的各种问题与解决方法

Filezilla server配置FTP服务器中的各种问题与解决方法

后面就选“允许链接”,所有时候都应用该规则,最后给这条规则命名如ftp default port,再用其他机器访问ftp就能弹出输入用户名和密码的窗口了,filezilla里也能看到连接的信息啦~

Filezilla server配置FTP服务器中的各种问题与解决方法

坑4:服务器本地可以访问ftp,其他机器输入用户名和密码后提示“打开ftp服务器上的文件夹时发生错误,请检查是否有权限”

原因:这个坑博主把上面那条提示放到百度里,也没搜到什么靠谱的解决办法,然后想着装一个filezilla client,用client访问ftp是不是能看到什么错误代码,果然找到了错误 代码"425 can't open data connection.",从*上搜到这个解决办法《setup filezilla server passive ports on windows server 2012》。大概是说ftp的客户端默认以passive mode(被动模式,博文最后解释了ftp的主动模式和被动模式)连接服务器,filezilla会随机打开1-65535之间的一个端口,导致这个错误的原因就是,防火墙封住了passive mode的端口。

出坑:

在passive mode settings里勾选use custom port range,如果让防火墙对1-65535端口全部开放有些危险,所以先在这里限定好端口范围

Filezilla server配置FTP服务器中的各种问题与解决方法

然后重复坑3在入站规则里打开21端口的过程,打开限定好的passive mode端口范围,唯一的不同就是在下面这里输入50100-51100,给这条规则命名如filezilla - passive ftp ports,再用其他机器访问就没有任何阻碍啦~

Filezilla server配置FTP服务器中的各种问题与解决方法

Filezilla server配置FTP服务器中的各种问题与解决方法

至此,filezilla配置过程中的所有坑都跳出来了,这里再补充两个小知识和一个小技巧:

1. 防火墙的入站规则和出站规则

下面是从网上copy下来的一段解释,对于ftp服务器来说,只涉及外网访问服务器,不涉及服务器访问外网,所以上面坑3和坑4都是在防火墙的入站规则里打开端口,没有修改出站规则。

出站就是你访问外网,入站就是外网访问你,用户可以创建入站和出站规则,从而阻挡或者允许特定程序或者端口进行连接。用户可以使用预先设置的规则,也可以创建自定义规则,可以将规则应用于一组程序、端口或者服务,也可 以将规则应用于所有程序或者某个特定程序;可以阻挡某个软件进行所有连接、允许所有连接,或者只允许安全连接,并要求使用加密来保护通过该连接发送的数据 的安全性;可以为入站和出站流量配置源ip地址及目的地ip地址,同样还可以为源tcp和udp端口及目的地tcp和upd端口配置规则。

2.ftp的主动模式和被动模式

ftp连接包括两类通道:一个控制连接(命令联系通道),几个数据连接(资料联系通道)。前者用于传递客户端的命令和服务器端对命令的响应,默认使用服务器的21端口,生存期是整个ftp会话时间。后者用于传输文件和其它数据,如目录列表等,只在需要数据传输时建立,而一旦数据传输完毕就关闭,每次使用的端口也不一定相同,根据数据连接是否由服务器发起,可以分为主动模式和被动模式。

《关于ftp的主动模式(active mode)和被动模式(passive mode)》里解释得比较清楚,ftp协议是建立在tcp协议基础上的,所以客户端与服务器的每次交互都要经过三次握手,通过两张图可以区分这两种模式:

主动模式:客户端端利用>1024的任意端口发起与服务器21端口建立连接,建立“命令联系通道”,如果要发生资料传输,通过21告知服务器端口(如1333)并 开始listen,服务器利用20端口向客户端的1333端口发起连接,建立“资料联系通道”。由于“资料联系通道”是由服务器主动建立的(图中步骤6),所以称作主动模式。Filezilla server配置FTP服务器中的各种问题与解决方法

被动模式:建立“命令联系通道”的方式和主动模式基本一样,也是连接先连接服务器的21端口。但是如果需要传输资料,客户端会送出pasv指令,告诉服务器要利用被动模式建立“资料联系通道”,然后服务器会打开一个端口并开始listen,并把这个端口通过“命令联系通道”告知客户端,客户端再打开一个端口,与服务器建立“资料连接通道”。由于“资料连接通道”是由服务器被动建立的,所以称作被动模式。Filezilla server配置FTP服务器中的各种问题与解决方法

3.取消ftp的自动登录

有时候我们访问某个ftp时可能设置了保存密码,之后每次访问那个ftp,都会默认通过之前的用户名和密码登录。为了安全起见不让它再自动登录,或者ftp设置了不同权限的用户,我们想通过其他用户名登录,可以在已进入的目录空白处右击,选择“登录”,弹出的窗口里把“保存密码”选项取消掉就可以了,在这个窗口里也可以输入其他用户名及密码,就是通过其他身份访问ftp了。