FTP(文件传输协议)是一种在本地计算机与云服务器之间进行文件上传下载的经典方法。无论您是更新网站内容、备份数据还是共享文件,搭建一个私有的FTP服务都非常实用。对于很多网站管理员和开发者而言,通过一个工具(如FileZilla)直接与服务器进行文件交互,是日常工作中重要的一环。而在云服务器上搭建FTP服务,正是为了满足这一需求。我们以最主流、最安全的vsftpd(Very Secure FTP Daemon)为例,在Linux系统上完成部署。
第一部分:准备工作与环境确认
拥有一台云服务器:确保您已拥有一台运行中的Linux云服务器(如CentOS或Ubuntu)。
获取服务器登录权限:使用SSH工具(如Terminal, PuTTY)以root用户或具有sudo权限的用户登录您的服务器。
如果您尚未拥有服务器,恒讯科技提供的多种配置的Linux云服务器,是搭建FTP服务的稳定且高性价比的选择。
第二部分:安装与配置vsftpd
步骤一:安装vsftpd软件
首先,我们通过系统包管理器安装vsftpd。
对于CentOS/RHEL/Alibaba Cloud Linux系统:
bash
sudo yum update -y
sudo yum install -y vsftpd
对于Ubuntu/Debian系统:
bash
sudo apt update
sudo apt install -y vsftpd
安装完成后,启动vsftpd服务并设置为开机自启:
bash
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
步骤二:配置vsftpd主配置文件
vsftpd的核心配置文件是 /etc/vsftpd/vsftpd.conf。在修改前,建议先备份:
bash
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup
然后使用vim或nano编辑该文件:
bash
sudo vim /etc/vsftpd/vsftpd.conf
找到并修改以下关键参数,确保它们与下文一致:
bash
# 允许本地用户登录
local_enable=YES
# 允许用户上传文件
write_enable=YES
# 设置本地用户的掩码,决定上传文件的默认权限(022表示755)
local_umask=022
# 启用被动模式(PASV),这对云服务器至关重要
pasv_enable=YES
# 设置被动模式使用的最小和最大端口范围,方便后续防火墙配置
pasv_min_port=30000
pasv_max_port=31000
# 重要!这里需要填写你的云服务器公网IP地址,否则客户端可能无法连接。
# 请将 `your_server_public_ip` 替换为您云服务器的实际公网IP。
pasv_address=your_server_public_ip
# 禁止匿名用户登录,提升安全性
anonymous_enable=NO
步骤三:配置FTP用户
出于安全考虑,不建议直接使用root用户。我们创建一个专用的FTP用户。
创建用户(例如,创建一个名为 ftpuser 的用户):
bash
sudo useradd -d /home/ftpuser -s /bin/bash ftpuser
sudo passwd ftpuser # 随后会提示你设置该用户的密码
设置用户目录权限:
bash
sudo chown -R ftpuser:ftpuser /home/ftpuser
第三部分:核心步骤——配置云服务器安全组与防火墙
这是最关键且最容易出错的一步!云服务器的外围有一道“虚拟防火墙”(安全组),必须放行相应端口,外部客户端才能连接。
需要放行以下两类端口:
FTP命令端口:21端口,用于建立控制连接。
FTP被动模式数据端口:我们在配置文件中设置的 30000-31000 端口范围,用于传输数据。
规则1:授权策略 允许,协议类型 FTP(21),源地址 0.0.0.0/0(如需限制IP,可填写您的本地公网IP)。
规则2:授权策略 允许,协议类型 自定义TCP,端口范围 30000/31000,源地址 0.0.0.0/0。
同时,如果您的云服务器系统内部启用了防火墙(如firewalld或ufw),也需要相应放行这些端口。
对于firewalld(CentOS常见):
bash
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
sudo firewall-cmd --reload
对于ufw(Ubuntu常见):
bash
sudo ufw allow 21/tcp
sudo ufw allow 30000:31000/tcp
sudo ufw reload
第四部分:重启服务与客户端测试
完成所有配置后,重启vsftpd服务以使配置生效:
bash
sudo systemctl restart vsftpd
现在,您可以在本地计算机上使用FTP客户端(如 FileZilla、WinSCP)进行测试了。
连接信息:
主机/Host: 您的云服务器公网IP地址
协议/Protocol: FTP
加密/Encryption: 使用明文FTP(不建议传输敏感数据)或尝试显式FTP over TLS(如果配置了SSL)
用户名/User: ftpuser
密码/Password: 您为 ftpuser 设置的密码
端口/Port: 21
连接成功后,您就可以在本地和云服务器的 /home/ftpuser 目录之间自由拖拽文件了。
第五部分:安全增强建议(可选但重要)
使用SFTP替代FTP:考虑到FTP协议本身不加密,对于敏感数据传输,更推荐直接使用SSH File Transfer Protocol (SFTP),它基于SSH,无需额外安装和配置。
为FTP添加TLS加密:可以通过为vsftpd配置SSL证书,启用FTPS,对传输过程进行加密。
限制用户访问目录:通过配置 chroot_local_user=YES,可以将FTP用户锁定在其家目录内,防止其访问系统其他文件。
总结
通过以上步骤,您已经在云服务器上成功搭建了一个功能完整、配置安全的FTP服务。整个过程清晰地展示了从软件安装、服务配置到云平台安全策略联动的完整闭环。
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !