【经典】阿里云ecs 搭建vsftpd遇到的问题以及解决方案

服务器

浏览数:303

2019-3-11

前言

在阿里云的ECS上搭建VSFTPD的时候遇到了一些奇怪的问题,下面将解决方案分享下。

vsftpd配置

最新的vsftpd是2.2.2版本vsftpd -v可以查看,配置文件跟之前有很大的不同,我们可以按照阿里云给出的文档进行配置

链接:ECS 阿里云VSFTPD 官方文档

关于user_list

网上很多教程关于user_list的说法都是如果开启了userlist_enable=YES并且userlist_deny=YES的时候,代表user_list文件内部是禁止的用户。但是实际上新版本的配置文件,只有一个userlist_enable=YES,这个的意思是『如果为YES代表禁止里面的用户登陆』,这个地方需要注意。

关于ftp无反应

在使用21端口进行访问的时候,长时间无反应,查看iptables发现是关闭状态,另外使用netstat命令查看vsftpd的确正在监控21端口。

于是怀疑是否是ecs的本身设置问题,登陆控制台,发现有安全组的配置。本身开启了部分端口。于是我们创建一个新的安全组添加端口为21/21,然后就可以登陆了。

关于filezilla失败问题

对于ftp而言,是有主动(pass)和被动(pasv)两种模式的,简单介绍下:
主动:服务端来链接客户端
被动:客户端去链接服务端

有什么区别呢?客户端在内网,经过层层代理,如果服务端来链接我的话,可能会找不到我。所以我们要用被动模式,也是最常用的模式。

但是报错了!!

连接建立,等待欢迎消息...
状态:     不安全的服务器,不支持 FTP over TLS。
状态:     已登录
状态:     读取“/”的目录列表...
状态:     服务器发回了不可路由的地址。使用服务器地址代替。

然后找资料很多都是说从被动模式回退为主动模式,但是我们稍加思考就知道这种方式不对哦。

我们来分析下:

  1. 必须使用被动模式,让客户端去链接服务端
  2. 服务端会告诉客户端『我打开了xx端口,你过来链接』
  3. 说明xxx端口对于客户端必须是可见的,这个要考虑安全组配置
  4. 那么安全组配置是配置范围,如何我让vsftpd开放的端口刚好在这个范围内呢?
  5. 配置vsftpd.conf的被动模式的端口范围

上面就是我们解决这个问题的思路,配置一个范围,在/etc/vsftpd/vsftpd.conf中加入下面代码

pasv_enable=YES
pasv_max_port=7000
pasv_min_port=6000

开启了6000-7000的端口,不要着急,我们还要去安全组将这个范围的端口打开,允许客户端链接进来,然后就大功告成!