在 Debian 系统下部署 FTP 服务器可以通过安装和配置 vsftpd
(Very Secure FTP Daemon)来实现。以下是详细的步骤说明:
1. 安装 vsftpd
打开终端,使用以下命令安装 vsftpd
:
sudo apt update
sudo apt install vsftpd
安装完成后,vsftpd
服务会自动启动。可以使用以下命令检查其状态:
sudo systemctl status vsftpd
如果服务未启动,可以手动启动:
sudo systemctl start vsftpd
sudo systemctl enable vsftpd # 设置开机自启
2. 配置 vsftpd
默认配置文件位于 /etc/vsftpd.conf
。在修改前建议备份:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
编辑配置文件:
sudo nano /etc/vsftpd.conf
基本配置示例(根据需求调整):
# 允许本地用户登录
local_enable=YES
# 允许上传文件
write_enable=YES
# 禁止匿名登录(安全考虑)
anonymous_enable=NO
# 限制用户只能访问其家目录(增强安全性)
chroot_local_user=YES
# 允许被动模式(适合客户端在防火墙后)
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
# 使用本地时间而非UTC
use_localtime=YES
可选配置:
- 允许匿名登录(不推荐生产环境):
anonymous_enable=YES
anon_root=/srv/ftp # 匿名用户根目录
- 限制用户列表:
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist # 允许/禁止的用户列表文件
userlist_deny=NO # NO表示仅允许列表中的用户
保存后退出编辑器(Ctrl+O
→ Enter
→ Ctrl+X
),然后重启服务:
sudo systemctl restart vsftpd
3. 防火墙设置
如果系统启用了防火墙(如 ufw
),需放行 FTP 端口:
sudo ufw allow 20/tcp # FTP 数据端口(主动模式)
sudo ufw allow 21/tcp # FTP 控制端口
sudo ufw allow 40000:50000/tcp # 被动模式端口范围
4. 创建 FTP 用户
使用现有系统用户:
确保用户有写权限(例如用户 xiaoluo_ftp
):
# 创建用户
sudo useradd -m xiaoluo_ftp
# 创建目录(如果尚未创建)
sudo mkdir -p /home/xiaoluo_ftp/ftp
# 更改目录所有者
sudo chown xiaoluo_ftp:xiaoluo_ftp /home/xiaoluo_ftp/ftp
# 验证更改
ls -ld /home/xiaoluo_ftp/ftp
新建专用用户(推荐):(这是客户端需要登录的用户名和密码在这设置)
sudo adduser xiaoluo
# 设置密码后,按提示完成创建
sudo mkdir -p /home/xiaoluo/ftp_upload
sudo chown xiaoluo:xiaoluo /home/xiaoluo/ftp_upload
(2)设置权限
- 家目录不可写(满足
chroot
安全要求):
sudo chmod a-w /home/xiaoluo
子目录可写(用于文件上传):
sudo chmod 777 /home/xiaoluo/ftp_upload # 或 755(按需调整)
修改 vsftpd
配置
编辑配置文件:
sudo nano /etc/vsftpd.conf
local_enable=YES # 允许本地用户登录
write_enable=YES # 允许上传文件
chroot_local_user=YES # 限制用户在家目录
allow_writeable_chroot=YES # 允许 chroot 目录可写(需配合权限控制)
pasv_enable=YES # 启用被动模式(适合客户端在防火墙/NAT后)
pasv_min_port=40000 # 被动模式端口范围
pasv_max_port=50000
userlist_enable=YES # 启用用户列表控制
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO # 仅允许列表中的用户登录
保存后重启服务:
sudo systemctl restart vsftpd
许用户登录
将用户 ftpclient
加入白名单:
echo "xiaoluo" | sudo tee -a /etc/vsftpd.userlist
这样客户端就能登录上传了
检测服务器是否正在启动和安装完成
检查服务状态
运行以下命令,确认 vsftpd
服务正在运行:
sudo systemctl status vsftpd
- 如果显示
active (running)
,说明服务已启动。 - 如果未运行,使用
sudo systemctl restart vsftpd
重启服务。 -
检查监听端口
FTP 默认使用 21(控制端口) 和 20(数据端口,主动模式),运行:
sudo netstat -tulnp | grep vsftpd
预期输出类似:
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1234/vsftpd
5. 测试 FTP 连接
命令行测试(本地):
ftp localhost
输入用户名和密码,尝试上传/下载文件。
图形化工具:
使用 FileZilla、WinSCP 等工具,填写:
- 主机:
服务器IP
- 用户名/密码:刚创建的用户凭据
- 端口:
21
6. 常见问题解决
- 连接超时:检查防火墙/安全组规则是否放行 FTP 端口。
- 530 Login incorrect:确保用户密码正确,且未被
userlist
限制。 - 550 Permission denied:检查用户对目标目录的读写权限(
chmod
和chown
)。 - 被动模式失败:确认
pasv_min_port
和pasv_max_port
在防火墙中开放。
7. 安全建议
- 禁用匿名登录:除非必要,否则始终设置
anonymous_enable=NO
。 - 启用 TLS 加密(可选):
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
- 日志监控:查看日志
/var/log/vsftpd.log
跟踪连接情况。
完成以上步骤后,你的 Debian 系统就已成功部署了一个功能完整的 FTP 服务器!