准备环境

操作系统:CentOS 7.5 64bit

Vsftpd: 3.0.2

1.安装 FTP 服务

1.1 安装 vsftpd

yum install -y vsftpd
bestp linux ftp 1

1.2 启动 vsftpd 服务

  1. 运行下面命令启动 FTP 服务。

    systemctl start vsftpd.service
  2. 设置 FTP 服务开机自启动。

    systemctl enable vsftpd.service
  3. 查看 FTP 服务监听的端口。

    netstat -antup | grep ftp
  4. 出现如下图所示界面,表示 FTP 服务已启动,监听的端口号为 21。此时,Vsftpd 默认已开启匿名访问功能,您无需输入用户名密码即可登录 FTP 服务器,但没有修改或上传文件的权限。

    bestp linux ftp 2

1.3 主动模式设置

主动模式适用于局域网(内网)环境下,云平台使用公网 FTP 服务,请使用被动模式。

主动模式下 vsftpd.conf 参数设置。

vim /etc/vsftpd/vsftpd.conf
# 修改参数如下,没有修改的为默认值
chroot_local_user=YES    # 全部用户被限制在主目录
chroot_list_enable=YES   # 启用例外用户名单
chroot_list_file=/etc/vsftpd/chroot_list  # 指定例外用户列表文件,列表中的用户不被锁定在主目录
allow_writeable_chroot=YES
local_root=/var/ftp/test # 设置本地用户登录后所在的目录
bestp linux ftp 3

1.4 被动模式设置

被动模式下 vsftpd.conf 配置参数设置。

vim /etc/vsftpd/vsftpd.conf

# 修改参数如下,没有修改的为默认值

local_root=/var/ftp/test     # 设置本地用户登录后所在目录
chroot_local_user=YES        # 全部用户被限制在主目录
chroot_list_enable=YES       # 启用例外用户名单
chroot_list_file=/etc/vsftpd/chroot_list  # 指定例外用户列表文件,列表中用户不被锁定在主目录
allow_writeable_chroot=YES
pasv_enable=YES                    # 开启被动模式
pasv_address=<FTP 服务器公网 IP 地址>  # 公网 IP
pasv_min_port=<port number>          # 设置被动模式下,建立数据传输可使用的端口范围的最小值
pasv_max_port=<port number>          # 设置被动模式下,建立数据传输可使用的端口范围的最大值
bestp linux ftp 4

被动模式下设置端口范围:建议把端口范围设置在一段比较高的范围内,例如 20000-21000,有助于提高访问 FTP 服务器的安全性。

被动模式用公网 FTP 使用,如果在 VPC 网络下主机部署 FTP 服务,还需 VPC 网络端口转发中设置转发配置文件中 pasv_min_port 和 pasv_max_port 之间的所有端口和 TCP 21 端口。

bestp linux ftp 5

安全组也需放行 VPC 网络端口转发的 FTP 服务员源端口。

bestp linux ftp 6
bestp linux ftp 7

2.客户端测试

2.1 主动模式测试

介于主动模式主要用于局域网内(内网)使用,本次测试客户端为内网云服务器,使用 IFTP 客户匿名用户登入测试如下。

bestp linux ftp 8

2.2 被动模式测试

浏览器地址栏中输入 ftp://<FTP 服务器公网 IP 地址>:FTP 端口,例如:ftp://139.198.xxx.xxx:21

bestp linux ftp 9