vsftpd(常用、安全)为例:
1. 安装 vsftpd
# Ubuntu/Debian
sudo apt update
sudo apt install vsftpd
# CentOS/RHEL/Fedora
sudo yum install vsftpd
2. 启动并设置开机自启
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
3. 配置 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
4. 创建FTP用户
# 创建用户(如 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
5. 防火墙设置
# 开放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
6. 重启服务
sudo systemctl restart vsftpd
7. 测试连接
使用FTP客户端(如 FileZilla、命令行工具):
- 主机:服务器IP
- 用户名/密码:ftpuser设置的密码
- 端口:21
可选:安全增强
使用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,步骤类似。根据需求调整配置即可。