1. 安装
1.1 安装 vsftpd
sudo yum install vsftpd -y1.2 启动服务并设置开机自启
sudo systemctl start vsftpd
sudo systemctl enable vsftpd2. 配置
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/ftp2.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_list2.4 重启服务
sudo systemctl restart vsftpd3. 端口说明
| 端口 | 协议 | 说明 |
|---|---|---|
| 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
bye4.4 查看日志
sudo tail -f /var/log/vsftpd.log5. 故障排查
| 问题 | 检查命令 |
|---|---|
| 服务启动失败 | 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 作者:周风磊