目录
vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征,比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。
vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。
0.准备工作及说明
- 操作系统:CentOS 7
- 服务器联网、关闭防火墙
- 本文介绍的方法,只有在被动模式下才可以正常使用!!!
1.安装vsftpd
[root@i-t729y6cz ~]# yum install vsftpd -y
2.配置vsftpd.conf
[root@i-t729y6cz ~]# vi /etc/vsftpd/vsftpd.conf
作如下修改:
anonymous_enable=NO # 禁止通过匿名方式登录FTP
chroot_local_user=YES # 禁止用户切换根目录
添加以下内容:
pasv_enable=YES # 允许被动模式
pasv_min_port=10060 # 被动模式下服务器使用的最小端口
pasv_max_port=10070 # 被动模式下服务器使用的最大端口
说明:
1、 被动模式与主动模式的介绍可以参考这两篇文章:
vsftpd的主动模式与被动模式
vsftpd主动模式和被动模式的区别
2、被动模式下使用的端口号范围要大于10000,个数无所谓。如果开启防火墙的话,需要特别设置,可以参考这两篇文章:
ftp 登陆后读取目录列表失败
Centos7搭建vsftpd及被动模式下的防火墙设置
保存,然后重启vsftpd服务:
[root@i-t729y6cz ~]# service vsftpd restart
查看vsftpd服务状态:
[root@i-t729y6cz ~]# service vsftpd status
3.创建FTP用户
创建一个名为ftpadmin的用户,并限制该用户只能通过FTP访问,不能直接登录服务器:
[root@i-t729y6cz ~]# adduser ftpadmin # 创建用户
[root@i-t729y6cz ~]# passwd ftpadmin # 设置密码
Changing password for user ftpadmin.
New password: # 输入密码
Retype new password: # 再次输入密码
passwd: all authentication tokens updated successfully.
[root@i-t729y6cz ~]# usermod -s /sbin/nologin ftpadmin # 限制该用户只能通过FTP访问
4.分配主目录
假设服务器上有一块存储空间较大的磁盘,挂载在/data
路径下,需要将FTP存储文件的空间设置在此路径下:/data/ftp/mydata
其中,/data/ftp
为FTP主目录,不能上传文件;/data/ftp/mydata
为文件存储的地方。/data/ftp
下可以创建其它文件夹,也可以嵌套。
[root@i-t729y6cz ~]# mkdir -p /data/ftp/mydata # 创建路径
[root@i-t729y6cz ~]# chmod a-w /data/ftp # 让FTP主目录不具有写权限
[root@i-t729y6cz ~]# chmod 777 -R /data/ftp/mydata # 让/mydata具有全部权限
[root@i-t729y6cz ~]# usermod -d /data/ftp ftpadmin # 指定ftpadmin的主目录
5.客户端登录
选择一款FTP客户端软件,如xFTP、WinSCP、FileZilla等,配置好IP、端口号、用户名、密码等信息,选择被动模式(一般默认为被动模式)进行连接,就可以登录了。
6.常见问题解决办法
这里只列出了问题的直接解决办法,问题的原因分析可以参考这篇文章:
centos7下配置ftp服务器,各种登录异常排查
排查之前,先在服务器本地测试一下FTP服务是否正常:
[root@i-t729y6cz ~]# ftp 192.168.70.9
Connected to 192.168.70.9 (192.168.70.9).
220 (vsFTPd 3.0.2)
Name (192.168.70.9:root): ftpadmin
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
6.1 问题1: 530 Login incorrect
解决办法: 将/etc/pam.d/vsftpd
文件中的auth required pam_shells.so
修改为auth required pam_nologin.so
,然后重启vsftpd服务。
6.2 问题2:500 OOPS: vsftpd: refusing to run with writable root inside chroot()
解决办法: 将FTP的主目录去掉写权限:chmod a-w /data/ftp
6.3 问题3:客户端能连接,但是无法获取文件列表
解决办法: 在防火墙中开放被动模式下使用的端口;将客户端修改为被动模式
欢迎关注我的微信公众号: