前言
在阿里云的ECS上搭建VSFTPD的时候遇到了一些奇怪的问题,下面将解决方案分享下。
vsftpd配置
最新的vsftpd是2.2.2版本vsftpd -v
可以查看,配置文件跟之前有很大的不同,我们可以按照阿里云给出的文档进行配置
关于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。
状态: 已登录
状态: 读取“/”的目录列表...
状态: 服务器发回了不可路由的地址。使用服务器地址代替。
然后找资料很多都是说从被动模式回退为主动模式,但是我们稍加思考就知道这种方式不对哦。
我们来分析下:
- 必须使用被动模式,让客户端去链接服务端
- 服务端会告诉客户端『我打开了xx端口,你过来链接』
- 说明xxx端口对于客户端必须是可见的,这个要考虑安全组配置
- 那么安全组配置是配置范围,如何我让vsftpd开放的端口刚好在这个范围内呢?
- 配置vsftpd.conf的被动模式的端口范围
上面就是我们解决这个问题的思路,配置一个范围,在/etc/vsftpd/vsftpd.conf
中加入下面代码
pasv_enable=YES
pasv_max_port=7000
pasv_min_port=6000
开启了6000-7000的端口,不要着急,我们还要去安全组将这个范围的端口打开,允许客户端链接进来,然后就大功告成!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。