vsftpd(常用、安全)为例:
# Ubuntu/Debian
sudo apt update
sudo apt install vsftpd
# CentOS/RHEL/Fedora
sudo yum install vsftpd
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
编辑配置文件:
sudo nano /etc/vsftpd.conf
常见配置项(按需修改):
# 允许本地用户登录
local_enable=YES
write_enable=YES
# 限制用户访问家目录(避免访问系统其他文件)
chroot_local_user=YES
allow_writeable_chroot=YES
# 设置被动模式端口范围(适用于防火墙/NAT环境)
pasv_min_port=30000
pasv_max_port=31000
pasv_address=你的服务器公网IP # 如果NAT环境需指定
# 禁止匿名登录(建议关闭)
anonymous_enable=NO
# 日志记录
xferlog_enable=YES
# 创建用户(如 ftpuser)
sudo useradd -m ftpuser
sudo passwd ftpuser
# 如需限制用户只能访问特定目录(如 /var/ftp):
sudo useradd -d /var/ftp -s /bin/bash ftpuser
sudo chown -R ftpuser:ftpuser /var/ftp
# 开放21端口(控制连接)和被动模式端口范围
sudo ufw allow 21/tcp
sudo ufw allow 30000:31000/tcp # 与配置中的pasv端口一致
# CentOS/RHEL(firewalld)
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
sudo firewall-cmd --reload
sudo systemctl restart vsftpd
使用FTP客户端(如 FileZilla、命令行工具):
使用SSL/TLS加密:
# 生成SSL证书
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.crt
在配置文件中添加:
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key
限制用户列表:
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list # 一行一个用户名
userlist_deny=NO # 仅允许列表中的用户登录
pasv_address为公网IP,并开放被动端口范围。chmod 755),用户有读写权限。如果需要更简单的方案,可考虑 proftpd 或 pure-ftpd,步骤类似。根据需求调整配置即可。