广州云服务器怎么创建ftp服务端?云服务器搭建ftp服务器教程
- 虚拟主机
- 2026-07-09
- 7
在阿里云、西西安全或华为云等主流云服务商提供的广州地域云服务器上搭建 FTP 服务,虽然技术原理与本地服务器一致,但由于云环境特有的安全组和网络策略,配置过程需要格外注意网络连通性和权限管理,以下将详细拆解从环境准备到服务验证的全过程。
环境准备与安全组配置
在开始安装软件之前,必须确保云服务器的防火墙规则允许 FTP 协议通信,FTP 协议比较特殊,它使用两个端口:控制端口(默认 21)用于发送命令,数据端口(默认 20,主动模式下)用于传输文件。
以西西安全或阿里云为例,你需要登录云控制台,找到该云服务器的“安全组”或“防火墙”设置,添加入方向规则:
- 端口范围:21
- 协议:TCP
- 授权对象:0.0.0.0/0(或指定你的 IP 段)
- 端口范围(被动模式):若使用被动模式,还需开放一个端口范围(如 30000-31000),并在 FTP 配置中指定该范围。
| 端口号 | 协议 | 用途 | 备注 |
|---|---|---|---|
| 21 | TCP | 控制连接 | 必须开放 |
| 20 | TCP | 数据连接(主动模式) | 可选,推荐用被动模式 |
| 30000-31000 | TCP | 数据连接(被动模式) | 推荐开放此范围 |
安装 VSFTPD 服务
VSFTPD(Very Secure FTP Daemon)是 Linux 系统中最流行且安全的 FTP 服务器软件,假设你使用的是 Ubuntu/Debian 系统(CentOS 系统命令略有不同,见下文备注),执行以下命令进行安装:
# 更新软件包列表 sudo apt update # 安装 vsftpd sudo apt install vsftpd -y # 启动服务并设置为开机自启 sudo systemctl start vsftpd sudo systemctl enable vsftpd
CentOS 用户备注:若使用 CentOS,请替换为 sudo yum install vsftpd -y 和 sudo systemctl start vsftpd。
配置 FTP 用户与权限
为了安全起见,不建议直接使用 root 用户登录 FTP,我们需要创建一个专门用于 FTP 访问的系统用户,并限制其只能访问特定目录。
创建系统用户
# 创建用户 ftpuser,并指定其主目录为 /var/www/html(假设你想共享网站目录) sudo useradd -m -d /var/www/html -s /bin/bash ftpuser # 设置用户密码 sudo passwd ftpuser
修改 vsftpd 配置文件
编辑 /etc/vsftpd.conf 文件:
sudo nano /etc/vsftpd.conf
确保以下关键配置项如下所示(若存在则修改,若不存在则添加):

注意:pasv_address 必须设置为你的云服务器公网 IP,否则客户端连接时会获取到内网 IP,导致连接超时。
重启服务
sudo systemctl restart vsftpd
验证与测试
配置完成后,可以使用命令行工具或图形化客户端(如 FileZilla)进行测试。
命令行测试:
ftp 你的服务器公网IP # 输入用户名 ftpuser 和密码 # 若成功连接,尝试 ls 列出目录,尝试 mkdir test 创建文件夹
图形化客户端测试(FileZilla):
- 主机:ftp://你的服务器公网IP
- 用户名:ftpuser
- 密码:你设置的密码
- 端口:21
- 加密:如果服务器未配置 SSL/TLS,选择“只使用普通 FTP(不安全)”。
若连接成功并能上传下载文件,则说明 FTP 服务端搭建完成。

常见问题排查
- 连接超时:90% 的原因是安全组未开放 21 端口或被动模式端口范围(30000-31000),请再次检查云控制台的安全组规则。
- 500 OOPS: vsftpd: refusing to run with writable root inside chroot():这是新版 vsftpd 的安全机制,解决方法是在配置文件中添加 allow_writeable_chroot=YES,或者在禁锢目录下创建一个子目录并赋予用户写入权限。
- 被动模式连接失败:检查 pasv_address 是否填写正确,以及防火墙是否放行了被动模式端口范围。
相关问题与解答
为什么使用被动模式(Passive Mode)时,客户端能连接但无法列出目录或上传文件?
解答:
这通常是因为 FTP 被动模式的数据连接端口未被正确开放或配置,在被动模式下,服务器会随机开放一个高端口告诉客户端,客户端需主动连接该端口传输数据。
- 检查配置:确保 vsftpd.conf 中设置了 pasv_min_port 和 pasv_max_port(30000-31000)。
- 检查安全组:云服务器的安全组必须放行这个特定的端口范围(30000-31000),而不仅仅是 21 端口。
- 检查 IP 设置:确保 pasv_address 指向的是服务器的公网 IP,而不是内网 IP,如果服务器位于 NAT 后面,可能需要配置 pasv_addr_resolve=YES 并指定域名,但通常直接填写公网 IP 最稳妥。
如何为 FTP 服务器添加 SSL/TLS 加密以保障数据传输安全?
解答:
默认的 FTP 传输是明文的,账号密码和文件内容均可被截获,添加 SSL 加密步骤如下:
- 生成自签名证书(生产环境建议购买正式证书): sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
- 修改 vsftpd.conf: rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES
- 重启服务:sudo systemctl restart vsftpd。
- 客户端连接:在 FileZilla 等客户端中,选择“显式 FTP over TLS”选项进行连接。
