本文基于百度云服务器BCC的centOS 7实例。参考资料:
Linux实例搭建FTP站点_搭建FTP站点_建站教程_云服务器 ECS-阿里云
一 安装vsftpd
- 安装vsftpd
yum install -y vsftpd
- 设置开机启动
systemctl enable vsftpd.service
- 启动ftp服务
systemctl start vsftpd.service
- 查看 FTP 服务监听的端口(默认是21)
netstat -antup | grep ftp
二 配置 vsftpd
- 配置本地用户登录
#添加ftp用户并设置密码
useradd ftptest
passwd ftptest
- 创建一个供FTP服务使用的文件目录
mkdir /var/ftp/test
- 更改/var/ftp/test目录的拥有者为ftptest
chown -R ftptest:ftptest /var/ftp/test
- 备份
/etc/vsftpd/vsftpd.conf
文件
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup
- 新建一个
/etc/vsftpd/vsftpd.conf
,使用被动模式,给与可写权限,配置内容如下,注意要设置<FTP服务器公网IP>
和指定两个port number
,否则无法以pasv
模式连接ftp。
#禁止匿名登录FTP服务器
anonymous_enable=NO
#允许本地用户登录FTP服务器
local_enable=YES
#设置本地用户登录后所在目录
local_root=/var/ftp/test
#全部用户被限制在主目录
chroot_local_user=YES
# 可以上传(全局控制)
write_enable=YES
#启用例外用户名单
chroot_list_enable=YES
#指定例外用户列表,这些用户不被锁定在主目录
chroot_list_file=/etc/vsftpd/chroot_list
#开启被动模式
pasv_enable=YES
#FTP服务器公网IP
pasv_address=<FTP服务器公网IP>
#设置被动模式下,建立数据传输可使用port范围的最小值
pasv_min_port=port number
#设置被动模式下,建立数据传输可使用port范围的最大值
pasv_max_port=port number
#配置其他参数
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
xferlog_std_format=YES
tcp_wrappers=YES
allow_writeable_chroot=YES
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
- 创建 /etc/vsftpd/chroot_list 文件,此文件中的用户列表可以不被限制在主目录。(如果没有例外用户也必须要有 chroot_list文件,内容可为空。)
touch /etc/vsftpd/chroot_list
- 重启vsftpd服务器
systemctl restart vsftpd.service
三 设置安全组
添加入站规则,使用ftp模板
默认出站规则开放所有端口,也可以自行修改为仅开放配置文件/etc/vsftpd/vsftpd.conf中参数pasv_min_port和pasv_max_port之间的所有端口。