FTP(文件传输协议)服务器可以实现文件的上传、下载和管理,适用于企业内网文件共享、网站维护等场景。 以下是详细的搭建步骤,涵盖不同操作系统和常见FTP服务软件(如vsftpd、FileZilla Server、IIS FTP)的配置方法。
1、选择FTP服务类型
-
FTP服务分为两种模式:
-
主动模式(PORT):服务器主动连接客户端的数据端口(需客户端开放端口)。
-
被动模式(PASV):客户端连接服务器的数据端口(需服务器开放端口范围,适合防火墙环境)。
-
推荐使用被动模式,避免因客户端防火墙导致连接失败。
-
2、Linux系统搭建(以vsftpd为例)
-
- 安装vsftpd
# Ubuntu/Debian
sudo apt update
sudo apt install vsftpd
# CentOS/RHEL
sudo yum install vsftpd
-
- 配置vsftpd
sudo vim /etc/vsftpd.conf
# 基本设置
anonymous_enable=NO # 禁止匿名登录
local_enable=YES # 允许本地用户登录
write_enable=YES # 允许写入权限
chroot_local_user=YES # 限制用户在其家目录
allow_writeable_chroot=YES # 允许家目录可写(需配合chroot)
# 被动模式配置
pasv_enable=YES
pasv_min_port=40000 # 被动模式最小端口
pasv_max_port=50000 # 被动模式最大端口
pasv_address=你的服务器IP # 若服务器有内网IP需指定公网IP
# 安全设置
userlist_enable=YES # 启用用户列表
userlist_file=/etc/vsftpd.userlist # 用户列表文件路径
# 创建FTP用户
sudo useradd -m ftpuser # 创建用户
sudo passwd ftpuser # 设置密码
sudo chmod a-w /home/ftpuser # 可选:限制用户只能通过FTP访问
# 配置防火墙
# 开放FTP控制端口(默认21)和被动模式端口范围
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
# 或使用iptables(CentOS)
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --permanent --add-port=40000-50000/tcp
sudo firewall-cmd --reload
# 启动服务
sudo systemctl start vsftpd
sudo systemctl enable vsftpd # 开机自启
3、Windows系统搭建
-
安装IIS和FTP组件
- 打开"服务器管理器" → "添加角色和功能" → 选择"Web服务器(IIS)" → 勾选"FTP服务器"和"FTP扩展"。
-
创建FTP站点
-
打开"IIS管理器" → 右键"网站" → "添加FTP站点" → 设置站点名称和物理路径。
-
绑定IP和端口(默认21),选择"无SSL"或配置SSL证书。
-
授权规则:选择用户或组,设置权限(读/写)。
-
-
配置防火墙
- 允许入站规则:TCP端口21和被动端口范围(如50000-60000)。
-
方法2:使用FileZilla Server(图形化工具)
-
下载安装
- 从FileZilla官网下载Server版本并安装。
-
配置服务器
-
启动后设置管理员密码。
-
在"Edit" → "Users"中添加用户,设置密码和家目录。
-
在"Edit" → "Settings" → "Passive mode settings"中配置被动模式端口范围(如50000-60000)。
-
-
-
开放防火墙端口
- 允许TCP端口21和被动端口范围。
4、安全加固建议
-
禁用匿名登录:确保配置中 anonymous_enable=NO。
-
使用SFTP/FTPS:通过SSH(SFTP)或SSL/TLS(FTPS)加密传输数据。
# vsftpd配置FTPS:
# 在 /etc/vsftpd.conf 中添加:
ssl_enable=YES
rsa_cert_file=/path/to/cert.pem
rsa_private_key_file=/path/to/key.pem
force_local_data_ssl=YES
force_local_logins_ssl=YES
-
限制用户权限:通过 chmod 或ACL控制目录访问权限。
-
日志监控:检查 /var/log/vsftpd.log(Linux)或IIS日志(Windows)排查异常。
5、测试FTP连接
- 使用命令行测试:
ftp 你的服务器IP
# 输入用户名和密码后,执行:
ls # 查看文件
get 文件名 # 下载
put 文件名 # 上传
-
使用图形化工具:
- 推荐使用FileZilla Client或WinSCP,输入IP、端口、用户名和密码连接。
6、常见问题解决
-
连接超时:检查防火墙是否放行端口,或尝试关闭防火墙临时测试。
-
530 Login incorrect:检查用户名/密码是否正确,或查看 /var/log/secure(Linux)日志。
-
550 Permission denied:确保用户对目录有读写权限,且 chroot 配置正确。