云服务器搭建FTP服务器教程:从零到生产环境的实战指南
本文基于我在多个生产环境中的实操经验,手把手教你如何在云服务器上搭建稳定、安全的FTP服务器。无论你是博客站长、公司文件共享需求,还是数据备份场景,这篇文章都能让你少走弯路。
一、为什么选择用云服务器搭建FTP?
很多新手喜欢用学生机或者免费主机搞FTP,结果发现要么带宽太小传文件慢到崩溃,要么安全组规则不开放端口导致连不上。我的建议是:搞FTP服务器,一定要选有弹性带宽、支持自定义安全组的云服务器。这里推荐我长期在用的沐雨云服务器,配置灵活、带宽充足,后台安全组规则设置非常清晰,尤其适合做文件服务。
沐雨云服务器官网: https://www.muyuyun.cn
二、准备工作:选购与初始配置
1. 服务器配置建议
- CPU:1核足够,并发文件传输不多的话2核更稳
- 内存:1~2GB(vsftpd很省内存)
- 系统:CentOS 7 / Ubuntu 20.04(我以CentOS 7为例)
- 带宽:至少5Mbps,否则大文件传输能急死人
- 数据盘:如果存储量大,建议挂载云硬盘,别把系统盘塞满
2. 安全组开放端口
这是80%新手翻车的地方。登录沐雨云服务器管理后台 → 安全组 → 添加规则:
- TCP 21(FTP控制端口)
- TCP 20(FTP数据端口,主动模式)
- 一个端口范围,比如 50000~60000(被动模式数据端口)
- 源:0.0.0.0/0(不限制IP)或指定你办公IP
避坑提醒:别只开21端口,被动模式会随机选端口,连不上大多是因为被动端口没放行。
三、安装vsftpd(以CentOS 7为例)
yum install -y vsftpd
systemctl enable vsftpd
systemctl start vsftpd
Ubuntu用 apt install vsftpd 即可。
检查运行状态:systemctl status vsftpd 显示active (running)就对了。
四、核心配置:打造生产可用FTP
配置文件位置 /etc/vsftpd/vsftpd.conf。我直接贴一份我常用的配置模板(去掉了注释,保留关键项):
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=60000
pasv_address=你的服务器公网IP
local_root=/data/ftp
guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/user_config
allow_anon_ssl=NO
force_local_data_ssl=NO
force_local_logins_ssl=NO
ssl_enable=NO
重点说明几个关键参数:
chroot_local_user=YES:限制用户只能访问自己的家目录(安全!)allow_writeable_chroot=YES:允许家目录可写(否则报500错误)pasv_address:必须填你的服务器公网IP,不然客户端连不上被动模式local_root:如果不设置,默认是用户家目录;自定义更方便
避坑提醒1:如果用户家目录设置成可写,一定要加 allow_writeable_chroot=YES,否则客户端登录后报 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
避坑提醒2:pasv_address 千万别写成内网IP,否则外面连不上。
五、创建FTP用户
传统Linux用户即可,但为了安全,建议使用虚拟用户。这里讲更常用的本地用户方式(简单够用)。
useradd -d /data/ftp -s /sbin/nologin ftpuser
passwd ftpuser # 设置密码,生产用强密码
chown -R ftpuser:ftpuser /data/ftp
chmod 755 /data/ftp
-s /sbin/nologin 禁止该用户SSH登录,只允许FTP。
如果想限制某个用户只能访问特定目录,在 /etc/vsftpd/user_config/ 下创建以用户名命名的文件,写入:
local_root=/data/ftp/user1
六、防火墙放行(重要)
如果用 systemctl 防火墙(firewalld):
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --zone=public --add-port=20/tcp --permanent
firewall-cmd --zone=public --add-port=50000-60000/tcp --permanent
firewall-cmd --reload
如果用的iptables,自行开放相应端口。
避坑提醒:很多云服务器安全组配完了,但服务器内部防火墙没关或没放行,同样连不上。先 systemctl stop firewalld 测试,能连了再优化规则。
七、测试连接
推荐使用 FileZilla 客户端(免费)。连接信息:
- 主机:你的云服务器公网IP
- 用户名:ftpuser
- 密码:刚才设置的
- 端口:21
- 传输模式:被动(勾选)
如果报“无法读取目录列表”,一般是被动端口没放通,检查安全组和服务器防火墙。
八、生产环境避坑合集
- 不要用匿名FTP:除非你故意做公共资源站,否则别人可以任意上传恶意文件。
- 限制IP访问:如果只给内部员工用,安全组源IP只放公司公网IP或VPN IP。
- 开启日志:
xferlog_enable=YES可以记录所有上传下载日志,方便排查问题。 - 禁用普通用户登录shell:如前面
-s /sbin/nologin。 - 定期更换密码:尤其当FTP暴露在公网,被暴力破解是常事。
- 考虑FTPS/SFTP:vsftpd支持SSL加密,但配置稍复杂。如果只是内网或信任网络,明文FTP可以;公网建议开启TLS或改用SFTP(基于SSH)。
- 磁盘空间监控:写个脚本检查
/data/ftp磁盘使用率,超过80%发告警,否则文件传一半失败。
九、为什么推荐沐雨云服务器?
我用过阿里云、腾讯云、华为云等等,沐雨云主要有三个优势:
- 带宽性价比高:很多大云厂商对学生机带宽限速很狠,沐雨云的5Mbps带宽实打实,上传大文件不憋屈。
- 安全组管理简单:图形化配置端口规则,还能批量放行IP段,适合我这种懒得写脚本的人。
- 售后响应快:有一次我半夜搞FTP被动模式连不上,工单20分钟就回复了,一步到位解决。
如果你正在选云服务器做FTP,不妨试试沐雨云。新人首单有折扣,官网可直接注册。
沐雨云服务器官网: https://www.muyuyun.cn
总结
FTP服务器搭建本身不复杂,难点在于网络层面的配置和安全性。记住三步:开对端口、配好被动模式、限制用户权限。按照本文步骤操作,半小时内就能跑起一个生产可用的FTP。如果遇到报错,先看日志 /var/log/vsftpd.log,大部分问题都能找到线索。
最后再次强调:别把FTP暴露在公网而不做任何防护。结合沐雨云的安全组功能,只允许信任IP访问,配合强密码,你的文件服务就能稳定运行很久。





这一切,似未曾拥有