阿里云搭建FTP服务器访问报错 200,227错误
问题描述
阿里云
服务器使用 xlight
搭建了一个FTP服务器,搭建完成后请求报错
打开FTP服务器上的文件夹时发生错误。请检查是否有权限访问该文件夹。
详细信息:
200 Type set to A.
227 Entering Passive Mode (****)
分析
ftp服务器有两种工作模式,port和pasv(主动和被动)
这两种模式都是客户端先向服务器端发出请求,服务器建立链接,以服务器为对象,当传输数据时,如果是服务器从20端口向客户端空闲端口发送请求建立链接,就是port(主动),反之,如果是客户端向服务器空闲端口请求建立链接,就是pasv(被动)
由于 阿里云
的 安全组规则
存在的原因,我们一般时只允许需要的端口,其他端口都屏蔽了
被动模式 pasv
时,端口
又是 随机
的,我们不能为了一个FTP 把所有端口都在 安全组规则
中放开,那么可以设置一个端口范围 ,这样 安全组规则
设置就不用那么暴力了
解决办法
打开 xlight
的设置
点击 Option for PASV mode IP and port
右边的 设置
按钮
默认是左边这个图,我们改成右边的配置
然后在阿里云的 安全组规则中添加 50000到50010 的配置
设置如下
设置完毕后重启 xlight
后 ftp服务就能正常访问了
解决方案二 ( 推荐 ) 开通20端口
FTP文件传输协议基于21端口和20端口
21端口:FTP传输控制信息端口;
20端口:FTP传输数据端口,是否会用到20端口与FTP传输模式有关,主动模式使用20端口传输,被动模式下服务器端和客户端协商决定端口。
阿里云ECS云服务器的默认安全组规则是没有开放FTP端口的,为了避免FTP使用遇到问题,可以同时配置21端口和20端口,参考:添加安全组规则 - 阿里云,安全组是一种虚拟防火墙,ECS实例是通过安全组来配置端口的。
在实际的FTP文件传输过程中,是否会用到20端口与FTP客户端设置的传输模式有关,主动模式使用20端口传输,被动模式使用哪个端口是协商决定的。那么什么是主动模式?什么是被动模式?
主动模式:客户端向FTP服务器发送端口信息,由服务器主动连接该端口;
被动模式:FTP服务器开启并发送端口信息给客户端,由客户端连接该端口,服务器被动接受连接。