在服务器上建立FTP服务器是一个常见的需求,主要用于文件传输、网站文件管理或数据共享,以下以Linux系统(以Ubuntu为例)和Windows Server系统分别介绍详细步骤,并包含配置优化和安全注意事项。

在Linux系统(Ubuntu)上搭建FTP服务器
安装FTP服务软件
Ubuntu系统常用vsftpd(Very Secure FTP Daemon)作为FTP服务器软件,通过以下命令安装:
sudo apt update sudo apt install vsftpd
安装完成后,服务会自动启动,可通过systemctl status vsftpd查看状态。
配置vsftpd
vsftpd的主配置文件位于/etc/vsftpd.conf,使用sudo nano /etc/vsftpd.conf编辑,关键配置项如下:
- 允许匿名用户访问:
anonymous_enable=NO(建议关闭,默认为NO) - 允许本地用户登录:
local_enable=YES - 允许文件上传:
write_enable=YES - 限制用户仅能在自家目录:
chroot_local_user=YES - 设置用户目录限制:
allow_writeable_chroot=YES(需配合chroot使用) - 启用被动模式:
pasv_enable=YES,pasv_min_port=10000,pasv_max_port=10100(避免端口冲突)
保存后重启服务:sudo systemctl restart vsftpd。

创建FTP用户
添加系统用户并设置密码:
sudo adduser ftpuser sudo passwd ftpuser
若需限制用户仅能通过FTP访问,可将其shell设置为/sbin/nologin:
sudo usermod -s /sbin/nologin ftpuser
配置防火墙
允许FTP相关端口(默认21和被动模式端口):
sudo ufw allow 21/tcp sudo ufw allow 10000:10100/tcp sudo ufw reload
测试连接
使用FileZilla或命令行ftp 服务器IP测试,输入用户名和密码成功登录即表示配置完成。
在Windows Server上搭建FTP服务器
安装FTP服务
通过服务器管理器添加角色功能:
- 选择“添加角色和功能”,点击“下一步”至“角色服务”页面。
- 勾选“Web服务器(IIS)”→“FTP服务器”→“FTP服务”和“FTP扩展性”。
- 完成安装后,IIS管理器会自动打开。
配置FTP站点
- 在IIS管理器中右键“网站”→“添加FTP站点”,输入站点名称和物理路径(如
C:\FTP)。 - 绑定IP和端口(默认21),SSL选择“无”(生产环境建议配置SSL)。
- 在“身份验证”中启用“基本身份验证”(需配合SSL)或“匿名身份验证”。
- 在“授权”中添加用户或权限组,设置读取/写入权限。
配置防火墙
允许FTP流量:
- 打开“高级安全Windows Defender防火墙”→“入站规则”→“新建规则”。
- 选择“端口”,TCP协议,输入21和被动模式端口范围(如5000-6000)。
- 允许连接,规则命名为“FTP”,启用规则。
创建FTP用户
在“计算机管理”→“本地用户和组”中添加用户,并设置密码,若需隔离用户,可在FTP站点属性中勾选“将用户限制到其主目录”。
安全优化建议
- 禁用匿名登录:避免安全隐患,确保所有用户需认证访问。
- 使用SFTP替代FTP:FTP传输数据为明文,建议通过SSH的SFTP协议加密传输。
- 定期更新:保持vsftpd或IIS组件为最新版本,修复安全漏洞。
- 日志监控:开启日志记录(如vsftpd的
xferlog_file=/var/log/vsftpd.log),定期分析异常访问。 - 限制用户权限:仅授予必要的读写权限,避免使用root或管理员账户。
常见问题配置
用户无法上传文件
- Linux:检查
write_enable=YES是否开启,用户目录权限是否为755(sudo chmod 755 /home/ftpuser)。 - Windows:确认FTP站点授权中用户有“写入”权限,以及IIS中目录的IIS_IUSRS组权限。
被动模式连接失败
- Linux:检查防火墙是否开放
pasv_min_port和pasv_max_port之间的端口,以及pasv_address是否设置为服务器公网IP。 - Windows:确保防火墙允许被动端口范围,且FTP站点中“外部IP地址”正确配置。
相关问答FAQs
Q1: 如何在Linux中限制FTP用户的磁盘空间?
A1: 可通过磁盘配额实现,首先安装quota工具:sudo apt install quota,然后对用户所在分区启用配额(如sudo quotacheck -ug /home),设置用户限制(如sudo setquota ftpuser 100M 200M 0 0 /home),表示软限制100MB,硬限制200MB。
Q2: Windows Server FTP站点如何支持SSL加密?
A2: 需先申请或生成SSL证书(如通过IIS管理器创建“自签名证书”),然后在FTP站点属性中勾选“需要SSL”,选择证书并设置“需要128位加密”,客户端连接时需勾选“使用SSL”选项。
