搭建 FTP 云服务器可以方便地上传、下载和管理文件。以下是基于 Linux 系统(如 Ubuntu/CentOS)搭建 FTP 云服务器的详细教程,使用 vsftpd(Very Secure FTP Daemon)作为 FTP 服务软件。
1. 准备工作
- 一台云服务器(确保已开放 FTP 相关端口:20、21 和被动模式端口范围)。
- 使用 SSH 连接到云服务器。
2. 安装 vsftpd
Ubuntu/Debian
sudo apt update sudo apt install vsftpd
CentOS/RHEL
sudo yum install vsftpd
安装完成后,启动 vsftpd 并设置开机自启:
sudo systemctl start vsftpd sudo systemctl enable vsftpd
3. 配置 vsftpd
编辑 vsftpd 配置文件(通常位于 /etc/vsftpd.conf
):
sudo nano /etc/vsftpd.conf
基本配置
# 允许本地用户登录 local_enable=YES # 允许上传文件 write_enable=YES # 设置本地用户的文件掩码 local_umask=022 # 禁止匿名用户登录 anonymous_enable=NO # 限制用户只能访问其主目录 chroot_local_user=YES # 启用被动模式 pasv_enable=YES pasv_min_port=10000 pasv_max_port=10100 # 设置 FTP 根目录(可选) local_root=/var/ftp # 日志记录 xferlog_enable=YES log_ftp_protocol=YES
保存并退出
按 Ctrl + O
保存,按 Ctrl + X
退出。
4. 配置防火墙
开放 FTP 相关端口:
Ubuntu/Debian (UFW)
sudo ufw allow 20/tcp sudo ufw allow 21/tcp sudo ufw allow 10000:10100/tcp sudo ufw reload
CentOS/RHEL (Firewalld)
sudo firewall-cmd --permanent --add-port=20/tcp sudo firewall-cmd --permanent --add-port=21/tcp sudo firewall-cmd --permanent --add-port=10000-10100/tcp sudo firewall-cmd --reload
5. 创建 FTP 用户
创建用户
sudo adduser ftpuser
设置密码:
sudo passwd ftpuser
限制用户访问权限
将用户限制在指定目录(如 /var/ftp
):
sudo usermod -d /var/ftp ftpuser sudo chown ftpuser:ftpuser /var/ftp sudo chmod 755 /var/ftp
6. 重启 vsftpd 服务
sudo systemctl restart vsftpd
7. 测试 FTP 服务器
使用 FTP 客户端(如 FileZilla)连接:
- 主机:云服务器的公网 IP 或域名
- 端口:21
- 用户名:
ftpuser
- 密码:设置的用户密码
8. 高级配置
启用 SSL/TLS
- 生成 SSL 证书:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
- 编辑 vsftpd 配置文件:
ssl_enable=YES rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO
- 重启 vsftpd:
sudo systemctl restart vsftpd
限制用户访问
将用户添加到允许或禁止列表:
- 编辑
/etc/vsftpd.user_list
或/etc/vsftpd.chroot_list
。 - 在配置文件中启用:
userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO # 仅允许列表中的用户
9. 常见问题排查
- 连接失败:检查防火墙和安全组规则,确保端口已开放。
- 无法上传文件:检查目录权限和
write_enable
配置。 - 用户被锁定:确保
chroot_local_user
和用户目录权限正确。
通过以上步骤,你可以在云服务器上成功搭建一个安全的 FTP 服务器,并根据需求进行扩展和优化。