TOP云提供高性价比云服务器租用,有中国内地/港澳台、海外等全球各地节点,TOP云国内云服务器只要有域名备案号就能直接用,无须重复备案;港澳台及海外云服务器不用备案,购买之后直接使用,省时省力省心。价格实惠,续费同价,2核2G5M仅需27元每月,8核8G50M仅需66元每月,更多配置套餐请进入下面网址了解:
TOP云总站云服务器:https://topyun.vip/server/buy.html
TOP云C站云服务器:https://c.topyun.vip/cart
在云服务器上搭建 FTP(File Transfer Protocol)服务,可以方便地进行文件的上传和下载操作。常见的 FTP 服务软件有:
vsftpd(Very Secure FTP Daemon):轻量级、安全、高效,适用于 Linux 系统,是最常用的 FTP 服务软件。
ProFTPD:功能强大,配置灵活。
Pure-FTPd:安全、简单,适合嵌入式系统。
本文将以 CentOS 和 Ubuntu 系统为例,介绍如何使用 vsftpd 搭建一个安全、基本的 FTP 服务。
一、前提条件
已有一台云服务器(如阿里云、腾讯云、华为云等)。
拥有服务器的 root 或 sudo 权限。
服务器防火墙和安全组已开放 FTP 所需端口(默认是 21 端口,以及被动模式下的数据端口范围)。
二、安装 vsftpd
1. 在 CentOS 上安装 vsftpd
sudo yum install epel-release -y
sudo yum install vsftpd -y
2. 在 Ubuntu 上安装 vsftpd
sudo apt update
sudo apt install vsftpd -y
安装完成后,vsftpd 服务会自动启动。你可以通过以下命令检查状态:
sudo systemctl status vsftpd
如果未启动,可以手动启动并设置开机自启:
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
三、配置 vsftpd
vsftpd 的主配置文件通常位于:
CentOS: /etc/vsftpd/vsftpd.conf
Ubuntu: /etc/vsftpd.conf
我们建议备份原始配置文件后再进行修改:
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
然后编辑配置文件:
sudo vi /etc/vsftpd/vsftpd.conf
以下是一个常用的基础安全配置示例(根据需求可调整):
# 允许本地用户登录
local_enable=YES
# 允许用户写入文件
write_enable=YES
# 禁止匿名登录(更安全)
anonymous_enable=NO
# 限制用户只能访问自己的家目录(增强安全性)
chroot_local_user=YES
# 启用被动模式(PASV),适合大多数客户端
pasv_enable=YES
# 被动模式下的端口范围(需在防火墙中开放这些端口)
pasv_min_port=30000
pasv_max_port=31000
# 设置被动模式下的服务器 IP(如果服务器有公网 IP,直接写公网 IP)
pasv_address=你的服务器公网IP
# 日志文件(可选)
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
说明:
chroot_local_user=YES:将用户限制在自己的家目录,防止用户访问系统其他目录,提高安全性。
pasv_enable=YES:启用被动模式,适合大多数 FTP 客户端(如 FileZilla)。
pasv_min_port 和 pasv_max_port:定义被动模式下使用的端口范围,需在防火墙中开放这些端口。
pasv_address:如果你的服务器位于 NAT 后(如云服务器),需要指定服务器的公网 IP 地址,否则客户端可能无法连接。
四、创建 FTP 用户
为了安全起见,建议为 FTP 创建一个专用用户,而不是直接使用 root 或其他系统用户。
1. 创建用户
sudo useradd -m ftpuser # 创建用户并创建家目录
sudo passwd ftpuser # 设置用户密码
这里的 ftpuser 是用户名,你可以根据需要修改。
2. 限制用户只能访问自己的家目录(如果未设置 chroot_local_user=YES)
如果未全局启用 chroot_local_user=YES,可以为特定用户设置限制:
sudo usermod -s /sbin/nologin ftpuser # 禁止用户登录系统 shell
或者使用 chroot 配置(高级)。
五、配置防火墙
FTP 默认使用 21 端口进行控制连接,同时使用被动模式下的数据端口范围(如 30000-31000)进行数据传输。
1. 在 CentOS 上配置防火墙(firewalld)
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
sudo firewall-cmd --reload
2. 在 Ubuntu 上配置防火墙(ufw)
sudo ufw allow 21/tcp
sudo ufw allow 30000:31000/tcp
sudo ufw reload
如果你使用的是云服务器(如阿里云、腾讯云等),还需要在云平台的安全组中开放这些端口。
六、测试 FTP 连接
1. 使用 FTP 客户端连接
你可以使用以下任意一种方式连接 FTP 服务器:
命令行工具(如 ftp 或 lftp)
图形化工具(如 FileZilla、WinSCP)
使用 FileZilla 连接示例:
主机:你的服务器公网 IP
用户名:ftpuser
密码:你设置的密码
端口:21
传输模式:选择 被动模式(PASV)
如果连接成功,你可以看到服务器上的文件目录(即 ftpuser 的家目录)。
七、常见问题排查
1. 连接失败,提示 “无法连接到服务器”
检查服务器是否启动了 vsftpd 服务:sudo systemctl status vsftpd
检查防火墙和安全组是否开放了 21 端口及被动模式端口范围。
检查云服务器是否配置了正确的 pasv_address(如果是 NAT 环境)。
2. 能连接但无法上传或下载文件
检查 write_enable=YES 是否开启。
检查用户的家目录权限是否正确:
sudo chmod 755 /home/ftpuser
注意:不要将家目录权限设置为 777,否则可能存在安全风险。
3. 被动模式连接失败
确保 pasv_enable=YES 已开启。
确保 pasv_min_port 和 pasv_max_port 已设置,并且防火墙已开放这些端口。
如果服务器位于 NAT 后,确保 pasv_address 设置为服务器的公网 IP。
八、安全建议
禁止匿名登录:确保 anonymous_enable=NO。
限制用户访问范围:使用 chroot_local_user=YES,将用户限制在自己的家目录。
使用强密码:为 FTP 用户设置复杂的密码。
使用 SSL/TLS 加密(FTPS):如果需要更高的安全性,可以配置 FTPS(FTP over SSL),但这需要额外的证书配置。
定期检查日志:查看 /var/log/vsftpd.log,及时发现异常登录行为。
如果你告诉我你使用的:
操作系统(如 CentOS 7、Ubuntu 20.04)
是否使用域名
是否需要支持匿名用户或仅限特定用户
我可以提供更具体的配置示例。