1. 安装

1.1 安装 vsftpd

sudo yum install vsftpd -y

1.2 启动服务并设置开机自启

sudo systemctl start vsftpd
sudo systemctl enable vsftpd

2. 配置

2.1 创建 FTP 用户

# 创建用户(用户名可自定义)
sudo useradd -d /data/ftp -s /sbin/nologin ftp_user

# 设置密码
sudo passwd ftp_user

# 创建家目录并授权
sudo mkdir -p /data/ftp
sudo chown ftp_user:ftp_user /data/ftp
sudo chmod 755 /data/ftp

2.2 修改配置文件

sudo tee /etc/vsftpd/vsftpd.conf << 'EOF'
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES

# 核心:不做 chroot 禁锢,用户可进入系统所有目录(按权限)
chroot_local_user=NO
allow_writeable_chroot=YES

# 仅允许名单内用户登录(把 ftp_user 加进白名单)
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO

# FileZilla 需要被动模式,固定数据端口段
pasv_enable=YES
pasv_min_port=39022
pasv_max_port=39022
#pasv_address=你的服务器公网IP,同一内网,不建议设置
# 固定监听 IPv4,避免 IPv6 导致的启动失败
listen=YES
listen_ipv6=NO

pam_service_name=vsftpd

# 超时
idle_session_timeout=600
data_connection_timeout=120
EOF

注意:将 pasv_address 替换为服务器真实公网IP。

2.3 配置用户白名单

echo "ftp_user" | sudo tee /etc/vsftpd/user_list

2.4 重启服务

sudo systemctl restart vsftpd

3. 端口说明

端口 协议 说明
21 TCP FTP 控制端口
30000-30100 TCP 被动模式数据端口

4. 验证

4.1 检查服务状态

sudo systemctl status vsftpd

预期输出:active (running)

4.2 检查端口监听

sudo netstat -tlnp | grep vsftpd

预期输出:端口 21 处于 LISTEN 状态

4.3 客户端连接测试

ftp 你的服务器公网IP
# 输入用户名: ftp_user
# 输入密码: [你设置的密码]

# 登录后测试命令
ls -la
put /etc/hosts
get test.txt
bye

4.4 查看日志

sudo tail -f /var/log/vsftpd.log

5. 故障排查

问题 检查命令
服务启动失败 sudo journalctl -u vsftpd -n 20
连接超时 telnet 公网IP 21
登录失败 (530) cat /etc/vsftpd/user_list
SELinux 拦截 getenforce
ARM seccomp 错误 配置中已添加 seccomp_sandbox=NO

6. 常用管理命令

sudo systemctl start vsftpd      # 启动
sudo systemctl stop vsftpd       # 停止
sudo systemctl restart vsftpd    # 重启
sudo systemctl status vsftpd     # 状态
sudo systemctl enable vsftpd     # 开机自启

文档更新时间: 2026-09-08 15:26   作者:周风磊