一、简介
vsftpd 全称是:very secure FTP daemon 非常安全的ftp后台程序,及ftp 服务端
二、服务器端部署
1.安装服务 yum install vsftpd -y
2.启动服务 systemctl start vsftpd.service
3.查看状态 systemctl status vsftpd.service
4.关闭服务 systemctl stop vsftpd.service
5.检查端口 netstat -anp | grep 21 (找不到netstat命令时运行yum install net-tools)
三、创建ftp访问用户
1.创建用户目录 mkdir -p /home/wwwroot/ftptest
2.创建用户 useradd -d /home/wwwroot/ftptest -g ftp -s /sbin/nologin ftptest
(-d 新用户每次登陆时所使用的家目录)(-g 指定用户对应的用户组 ftp分组是内置的,本来就存在,不需要自己创建)( -s /sbin/nologin 表示这个用户不能用来登录xshell这样的客户端。 这种不能登陆的用户又叫做虚拟用户)
3.设置目录权限 chown -R ftptest /home/wwwroot/ftptest (拥有者设置为ftptest)
vi /etc/vsftpd/chroot_list (此文件本来是空的) 增加一行: ftptest
4.增加用户允许写权限
(vsftpd服务器是这样的,一旦某个用户被限制访问了,那么默认情况下,该用户的写权限也被剥夺了。 这就导致ftp客户端连接上服务器之后无法上传文件。
这个时候,就需要打开此用户的写权限)
vi /etc/vsftpd/vsftpd.conf 在最后面新加一行:allow_writeable_chroot=YES
五、配置端口
1.vsftpd有两种端口,一个是21端口,用来监听客户端连接请求的。 这个一般说来是固定的,就一直使用21端口。
另一种是,一旦获取到请求之后,再专门用用户服务端和客户端传输数据的端口。
2.编辑配置文件
vi /etc/vsftpd/vsftpd.conf
在最后添加:
(表示使用被动模式,用于传输数据的端口分配从30000-30010之间)
六:解决用户鉴权问题
(因为用户 ftptest 是 nologin的,所以存在鉴权的问题。 )
1.编辑pam.d/vsftpd 文件
vi /etc/pam.d/vsftpd 注释掉 #auth required pam_shells.so (这样不去鉴权,从而允许 ftptest 这种 nologin用户登录 ftp 服务器.)
2.编辑shells 文件
vi /etc/shells 增加一行:/sbin/nologin (允许不能登录系统的用户通过鉴权)
七、重启vsftpd服务器
通常重启命令:service vsftpd restart
centos7改用命令:systemctl restart vsftpd.service
查看状态:systemctl status vsftpd.service
八、阿里云服务器还需配置安全组,新增21和 30000/30010端口
九、客户端
1.ftp客户端工具
FileZilla (所有平台)、WinSCP (Windows)、Transmit (Mac OS X)、FireFTP (所有平台与Firefox)、Cyberduck (Mac OS X)、ftprush(Windows)