服务器上放一个FTP,听起来是个老办法,但在不少场景里它确实比别的方式省事。网站源码、设计稿、日志备份这些东西要经常往返传,远程桌面拖文件慢,微信和网盘中转又容易乱。如果手里已经有一台阿里云服务器,用vsftpd搭一个FTP服务,通常是最快能用上的方案。下面按实际操作的顺序讲一遍,重点放在被动模式和权限这两个最容易踩坑的地方。

为什么选阿里云服务器来放FTP
FTP是很老的传输协议,现在大家更常用SFTP。但老系统、自动化脚本和一些网站程序的部署工具,仍然只认FTP,这一点短期内改不了。把服务放在阿里云上,主要有三个实际好处:
- 带宽稳定:多地域机房可选,带宽档位也能按需要调,比家里的宽带更适合大文件上传下载。
- 随时能取:服务器一直在线,外地的同事或客户不用等你开机,要文件时直接连就行。
- 文件集中放:源码、素材、备份放在同一台机器上,找起来有章法,也方便统一备份。
一个真实感的使用场景
举个例子。一家五人的设计工作室,每周要给客户交付大量高清图片和源文件。以前靠微信和网盘中转,文件过大时压缩失败,版本还经常混在一起。后来他们在阿里云ECS上搭了FTP,给每位设计师和客户分配独立账号,目录按项目名划分。用了一个月,交付速度明显快了,文件版本也有了清楚的记录。这类需求里,FTP的价值主要在于用法是否规整,工具本身倒不是关键。
动手之前先确认这几件事
准备工作做扎实,后面省很多时间。
- 系统版本:CentOS、Alibaba Cloud Linux或Ubuntu都可以,尽量先把系统更新到最新。
- 安全组:在阿里云控制台的安全组里放行21端口,同时放行被动模式要用的端口段,比如40000到40100。只开21不开端口段,连接会卡在列表那一步。
- 管理账号:日常操作用一个非root的专用账号,出了问题也好追溯。
- 先备份配置:改vsftpd.conf之前复制一份原文件,改坏了能立刻退回去。
基于vsftpd的安装与配置
vsftpd全称Very Secure FTP Daemon,是Linux上最常用的FTP服务程序,配置项少,上手快。下面以Alibaba Cloud Linux或CentOS为例。
1. 安装并设置开机自启
sudo yum install -y vsftpd
sudo systemctl enable vsftpd && sudo systemctl start vsftpd
2. 为用户创建独立目录
每个用户只待在自己的主目录里,互相不能看到,也碰不到系统其他部分。以工作室里的一位设计师为例:
sudo useradd -d /data/ftp/designer01 -s /sbin/nologin designer01
sudo passwd designer01
sudo mkdir -p /data/ftp/designer01/upload
sudo chown -R designer01:designer01 /data/ftp/designer01
这里的/sbin/nologin会阻止这个账号通过SSH登录系统,只允许走FTP,这一点很重要。
3. 修改vsftpd.conf
编辑/etc/vsftpd/vsftpd.conf,下面这几项是要重点核对的:
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100
pasv_address=服务器公网IP
关闭匿名访问,是为了让每个连接都有明确身份。chroot_local_user把用户锁在主目录里。pasv_address那一行最容易出问题:服务器在阿里云内网里,没有填公网IP的话,被动模式下客户端拿到的是内网地址,数据连接建不起来。请把“服务器公网IP”换成实际地址。
4. 放行系统防火墙
阿里云安全组之外,服务器自己的防火墙也要开:
sudo firewall-cmd –permanent –add-port=21/tcp
sudo firewall-cmd –permanent –add-port=40000-40100/tcp
sudo firewall-cmd –reload
改完后重启服务让配置生效:sudo systemctl restart vsftpd。
安全加固
FTP默认是明文传输,账号密码和文件内容在网络上都是可以被看到的。放在公网上,这个问题必须认真对待。下面几条做了基本能降低风险:
- 上FTPS:在vsftpd里配置SSL/TLS证书,账号和文件都走加密通道。客户端要选择显式或隐式FTPS,否则还是明文。
- 限制爆破:装fail2ban,对短时间内多次登录失败的IP自动封掉。没有这一层,服务器很快会被扫描器盯上。
- 保持更新:vsftpd和系统补丁要定期升级,老版本的已知漏洞是最容易被利用的入口。
- 权限只给够用:每个账号只进自己的目录,不需要删除权限就不要给。
- 能用SFTP就用SFTP:SFTP基于SSH,加密是天然的,配置也不复杂。如果只是团队内部传文件,直接换它通常更省心。
常见报错怎么查
下面四类问题出现得最多,可以先对照着看。
- 连上了但列表为空或超时:先查安全组是否放行了40000到40100,再看pasv_address是不是公网IP。这是阿里云环境里最常见的情况。
- 提示530登录失败:检查用户是否在vsftpd的黑名单文件里(ftpusers或user_list),再确认密码没输错。
- 能连但上传失败:看目录的所有者和权限,同时确认write_enable已经设为YES。
- 服务起不来:运行sudo journalctl -u vsftpd,报错信息通常直接写在最后几行,照着改就行。
小结
在阿里云服务器上搭FTP,主要就是装好vsftpd,给每个用户划出独立目录,把被动模式参数设对,再同时开放安全组和系统防火墙。对有明确传输需求的小团队,这套方案成本低,见效也快。但FTP本身的安全短板不能忽略,能上加密就上加密,能换SFTP就尽量换。按这个思路走,阿里云服务器ftp的部署一般能一次跑通。