📦 安装 vsftpd
sudo apt update
sudo apt install vsftpd -y
#确认vsftpd状态
sudo systemctl status vsftpd
#手动启动vsftpd
sudo systemctl start vsftpd
#设置vsftpd开机自启
sudo systemctl enable vsftpd
# 创建chroot_list文件
sudo touch /etc/vsftpd.chroot_list
👤 创建 FTP 用户和目录
为了安全,建议创建一个只能访问 FTP、不能 SSH 登录的专用用户。
创建用户并禁止 SSH 登录
sudo useradd -s /usr/sbin/nologin ftptest
创建 FTP 根目录
sudo mkdir -p /home/ftptest/FtpHome
sudo chown ftptest:ftptest /home/ftptest/FtpHome
sudo chmod 755 /home/ftptest/FtpHome
设置密码
sudo passwd ftptest
⚙️ 配置 vsftpd
基础配置/etc/vsftpd.conf ,如下:
# 监听配置 listen=YES listen_ipv6=NO # 匿名访问控制 anonymous_enable=NO anon_upload_enable=NO anon_mkdir_write_enable=NO # 本地用户控制 local_enable=YES write_enable=YES local_umask=022 # 目录锁定 chroot_local_user=YES #允许被限制的用户家目录可写(解决 chroot 后无法写入的问题) allow_writeable_chroot=YES #设置 FTP 根目录 local_root=/home/ftptest/FtpHome # 日志 xferlog_enable=YES xferlog_file=/var/log/vsftpd.log # 被动模式端口范围 pasv_enable=YES pasv_min_port=40000 pasv_max_port=40100⚙️ 配置 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