📦 安装 vsftpd
sudo apt update
sudo apt install vsftpd -y
sudo systemctl status vsftpd #确认状态
sudo systemctl start vsftpd #手动启动
sudo systemctl enable vsftpd #设置开机自启
👤 创建 FTP 用户和目录
出于安全考虑,建议创建一个专用用户,该用户仅能访问 FTP,无法通过 SSH 登录系统。
创建 FTP 根目录
sudo mkdir -p /home/FtpHome
创建用户并禁止 SSH 登录
sudo useradd -d /home/ftptest/FtpHome -s /usr/sbin/nologin ftptest
设置密码
sudo passwd ftptest
创建可读写的子目录并设置权限
sudo mkdir -p /home/ftptest/FtpHome
sudo chown ftpuser:ftpuser /home/ftptest/FtpHome
sudo chmod 755 /home/ftptest /home/ftptest/FtpHome
⚙️ 配置 vsftpd
基础配置/etc/vsftpd.conf ,如下:
anonymous_enable=NO:禁止匿名登录
local_enable=YES:允许本地用户登录
write_enable=YES:允许上传文件
chroot_local_user=YES:限制用户只能访问自己的家目录
allow_writeable_chroot=YES:允许被限制的用户家目录可写(解决 chroot 后无法写入的问题)
local_root=/home/FtpHome:设置 FTP 根目录
⚙️ 配置 PAM
修改/etc/pam.d/vsftpd,如下,避免登录密码后提示拒绝:
#auth required pam_shells.so
auth required pam_unix.so
account required pam_unix.so
🔥 防火墙设置
查看端口21是否被占用
ss -tuln | grep 21
如果你启用了 ufw 防火墙,需要放行相关端口:
放行 FTP 控制端口 21
sudo ufw allow 21/tcp
放行被动模式端口范围
sudo ufw allow 40000:41000/tcp
重新加载防火墙
sudo ufw reload
🔄 重启服务并测试
sudo systemctl restart vsftpd
附:查看vsftpd日志
journalctl -u vsftpd --no-pager -n 50S