# 1.基本知识
# 1.1 FTP服务通道
# 1.1.1 命令通道ftp
默认端口为 port 21, 用于传输控制流。
# 1.1.2 数据通道ftp-data
默认端口为port 20, 用于在客户端和服务器之间传输数据流。
# 1.2. FTP传输模式
# 1.2.1 Standard (PORT方式,主动方式)
主动模式工作流程:

1.客户端打开一个随机的端口(端口号大于1024,我们称它为x),启用FTP进程连接至服务器的21号命令端口,建立命令连接通道。
2.客户端启动随机端口(x+1),同时向服务器21端口发送一个Port命令,此命令告诉服务器客户端正在监听的端口号(x+1)并且已准备好从此端口接收数据。
3.服务器打开20号源端口并且创建和客户端数据(x+1)端口的连接(主动连接特点),然后FTP服务器将通过端口传送数据。
# 1.2.2 Passive (PASV,被动方式)
被动模式工作流程:

1.客户端打开一个随机的端口(端口号大于1024,我们称它为x),同时启用FTP进程连接至服务器的21号命令端口,建立命令连接通道。
2.客户端开始监听端口(x+1),同时向服务器21端口发送一个Pasv命令,等待服务器响应。
3.服务器收到Pasv命令后,打开一个临时端口(端口号大于1023小于65535,我们称它为p),并且通知客户端在这个端口上传送数据的请求。
4.客户端(x+1)端口与FTP服务器(p)端口建立连接(被动连接特点),然后FTP服务器将通过端口传送数据。
综上,主动模式与被动模式的区别: 主动模式是服务器端主动与客户端进行联机 ,而被动模式为客户端主动与服务器端进行联机 。主动模式要求客户端打开并且监听一个端口以创建连接,被动模式只要求客户端和服务器端分别产生一个随机端口以创建连接。
# 2. FTP安装
# 2.1 安装
yum -y install vsftpd
# 2.2 启动服务
systemctl start vsftpd
# 2.3 查看服务状态
systemctl status vsftpd.service
# 2.4 配置
# 2.4.1 创建ftp用户
创建用户ftpvideo,并指定用户主目录为/data/ftproot
useradd -d /data/ftproot ftpvideo
设置fpt用户密码(运行后输入两次相同密码,如ftpvideo)
passwd ftpvideo

# 2.4.2 配置优化
配置文件路径 /etc/vsftpd/vsftpd.conf
禁止匿名访问
anonymous_enable=no
允许本地用户登录
local_enable=YES
启用白名单文件
userlist_enable=YES
userlist_deny=NO
设置欢迎语(可选项)
ftpd_banner=Welcome to access apegeek ftp services.
开启被动模式
pasv_enable=YES
,如果没有则追加。同时追加被动模式下的端口区间
pasv_min_port=60000
pasv_max_port=62000
端口调整
listen_port=2021
ftpd_banner=Welcome to access apegeek ftp services.
listen_port=2021
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
tcp_wrappers=YES
pasv_enable=YES
pasv_min_port=60000
pasv_max_port=62000
local_root=/data/ftproot/
anonymous_enable=NO
local_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/xferlog
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 2.4.3 添加白名单
编辑文件 vi /etc/vsftpd/user_list
添加ftpvideo用户。
# 2.4.4 设置开机启动
设置:systemctl enable vsftpd.service
确认:systemctl list-unit-files | grep vsftpd

# 2.5 重启服务
service vsftpd restart
# 2.6 规则开放

# 2.7 验证
