# 更新软件包列表
sudo apt update
# 安装 vsftpd
sudo apt install vsftpd -y
# 检查服务状态
sudo systemctl status vsftpd
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup
sudo nano /etc/vsftpd.conf
# 基本设置
listen=YES
listen_ipv6=NO
anonymous_enable=NO # 禁止匿名登录
local_enable=YES # 允许本地用户登录
write_enable=YES # 允许写入操作
dirmessage_enable=YES # 显示目录消息
use_localtime=YES # 使用本地时间
xferlog_enable=YES # 启用传输日志
connect_from_port_20=YES
# 日志设置
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
# 安全设置
chroot_local_user=YES # 用户限制在自己的主目录
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
allow_writeable_chroot=YES # 允许chroot目录可写
# 被动模式设置(重要!)
pasv_enable=YES
pasv_min_port=40000 # 被动模式最小端口
pasv_max_port=50000 # 被动模式最大端口
pasv_address=你的公网IP # 服务器公网IP,内网可注释
pasv_promiscuous=NO
# 其他设置
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
# 创建用户(不创建home目录)
sudo useradd -m ftpuser -s /bin/bash
# 设置密码
sudo passwd ftpuser
# 将用户添加到允许列表
echo "ftpuser" | sudo tee -a /etc/vsftpd.chroot_list
# 1. 创建虚拟用户数据库文件
sudo mkdir -p /etc/vsftpd/virtual_users
cd /etc/vsftpd
# 2. 创建用户名密码文件
sudo nano vusers.txt
内容格式(一行用户名,一行密码):
user1
password1
user2
password2
# 3. 生成数据库文件
sudo db_load -T -t hash -f vusers.txt vsftpd-virtual-user.db
sudo chmod 600 vsftpd-virtual-user.db
# 4. 创建PAM配置文件
sudo nano /etc/pam.d/vsftpd-virtual
添加以下内容:
auth required pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-user
account required pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-user
# 创建本地用户(用于映射虚拟用户)
sudo useradd -d /home/vftp -s /sbin/nologin virtual
# 创建FTP根目录
sudo mkdir -p /home/vftp
sudo chown virtual:virtual /home/vftp
sudo chmod 755 /home/vftp
# 为用户创建个人目录
sudo mkdir -p /home/ftpuser/files
sudo chown ftpuser:ftpuser /home/ftpuser/files
sudo chmod 755 /home/ftpuser
# 允许FTP端口(如果使用UFW)
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
# 如果使用firewalld
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --permanent --add-port=20/tcp
sudo firewall-cmd --permanent --add-port=40000-50000/tcp
sudo firewall-cmd --reload
# 重启vsftpd服务
sudo systemctl restart vsftpd
# 设置开机自启
sudo systemctl enable vsftpd
# 检查服务状态
sudo systemctl status vsftpd
# 命令行测试
ftp 服务器IP地址
# 输入用户名和密码
ftp://用户名:密码@服务器IP地址
# 检查服务是否运行
sudo systemctl status vsftpd
# 检查端口是否开放
sudo netstat -tulpn | grep :21
# 检查防火墙设置
sudo ufw status
# 在配置文件中添加/修改
pasv_address=your_public_ip
pasv_min_port=40000
pasv_max_port=50000
# 检查SELinux状态(如果是CentOS/RHEL)
getenforce
# 如果启用,禁用或配置规则
sudo setsebool -P ftpd_full_access on
# 生成SSL证书
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/vsftpd.key \
-out /etc/ssl/certs/vsftpd.crt
# 修改配置启用SSL
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key
这样就完成了FTP服务器的搭建。根据实际需求调整配置参数。