一、VSFTP简介
- VSFTP(Very Secure FTP)的定义与特点
- 适用场景与优势(安全性、轻量级、高性能)
- 常见FTP协议对比(主动模式 vs 被动模式)
二、环境准备
- CentOS 7系统基础要求(最小化安装建议)
- 网络配置检查(防火墙、SELinux状态)
- 必要的软件包更新(
yum update)
三、安装VSFTP服务
-
基于yum源已配置完成的情况下。
- 通过YUM安装VSFTP:
yum install vsftpd -y - 启动服务并设置开机自启:
systemctl enable vsftpd --now - 验证服务状态:
systemctl status vsftpd
四、基础配置详解
- 主配置文件路径:
/etc/vsftpd/vsftpd.conf - 关键参数说明(匿名访问、本地用户登录、端口设置)
- 示例配置片段:
anonymous_enable=NO local_enable=YES write_enable=YES chroot_local_user=YES
五、用户与权限管理
- 创建FTP专用用户:
useradd -d /var/ftp/user1 -s /sbin/nologin user1 - 设置用户密码:
passwd user1 - 目录权限控制(
chmod与chown)
六、防火墙与SELinux配置
- 开放FTP端口(21/TCP):
firewall-cmd --add-service=ftp --permanent - SELinux策略调整:
setsebool -P ftp_home_dir on - 被动模式端口范围配置(如适用)
七、客户端连接测试
- 命令行工具测试:
ftp [服务器IP] - FileZilla等图形化工具配置
- 常见连接错误排查(超时、认证失败)
八、高级功能扩展
- SSL/TLS加密传输配置
- 限制用户IP访问(
hosts.allow/deny) - 日志分析与监控(
/var/log/xferlog)
九、安全加固建议
- 禁用匿名登录
- 定期备份配置文件
- 更新策略与漏洞防护
十、总结与参考资料
- 核心步骤回顾
- 官方文档与社区资源推荐
步骤一:安装vsftpd
基于yum源已配置完成的情况下。
1.执行以下命令,安装 vsftpd
sudo yum install -y vsftpd
2.执行以下命令,设置 vsftpd 开机自启动。
systemctl enable vsftpd
3.执行以下命令,启动 FTP 服务。
systemctl start vsftpd
4.执行以下命令,确认服务是否启动。
netstat -antup | grep ftp
如果显示以下图片则无net软件包

通过这个命令进行下载
sudo yum install -y net-tools
或使用ss命令去验证
使用 ss 命令(推荐,更现代)
ss -tlnp | grep vsftpd
# 或者更广泛地搜索 21 端口(FTP默认端口)
ss -tlnp | grep ':21'
显示结果如下,则说明 FTP 服务已成功启动。
![]()
步骤二:配置 vsftpd
1.执行以下命令,为 FTP 服务创建一个 Linux 用户,本文以 ftpuser 为例
useradd ftpuser
2.执行以下命令,设置 ftpuser 用户的密码。
passwd ftpuser
输入密码后请按 Enter 确认设置,密码默认不显示。
遇到下图无需理会,注意密码要输两遍
![]()

3.执行以下命令,创建 FTP 服务使用的文件目录,本文以 /var/ftp/test 为例。
mkdir /var/ftp/test
4.执行以下命令,修改目录权限。
chown -R ftpuser:ftpuser /var/ftp/test
运行以下命令,备份vsftp配置文件。
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
5.执行以下命令,打开 vsftpd.conf 文件。
vim /etc/vsftpd/vsftpd.conf
按 i 切换至编辑模式,根据实际需求选择 FTP 模式,修改配置文件 vsftpd.conf。
1.修改以下配置参数,设置匿名用户和本地用户的登录权限,设置指定例外用户列表文件的路径,并开启监听 IPv4 sockets。
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
2.在行首添加 #,注释 listen_ipv6=YES 配置参数,关闭监听 IPv6 sockets。
#listen_ipv6=YES
添加以下配置参数,开启被动模式,设置本地用户登录后所在目录,以及云服务器建立数据传输可使用的端口范围值。
local_root=/var/ftp/test
allow_writeable_chroot=YES
#pasv_enable=YES 被动模式,pasv_enable=NO 主动模式
pasv_enable=YES
#请修改为您的 Linux 云服务器公网 IP
pasv_address=xxx.xx.xxx.xx
pasv_min_port=40000
pasv_max_port=40100
公网IP查询可以在百度里搜索IP
或者使用 curl cip.cc 命令直接查询
3.按 Esc 后输入 :wq 保存后退出。
4.执行以下命令,创建并编辑 chroot_list 文件。
vim /etc/vsftpd/chroot_list
5.按 i 进入编辑模式,输入用户名,一个用户名占据一行,设置完成后按 Esc 并输入 :wq 保存后退出。设置的用户将会被锁定在主目录,您若没有设置例外用户的需求,可跳过此步骤,输入 :q 退出文件。插入ftpuser的单个用户

6.执行以下命令,重启 FTP 服务。
systemctl restart vsftpd
步骤三:设置安全组/防火墙
根据您的 FTP 模式选择,需要开放相应的端口:
如果您使用的是主动模式:
bash
# 开放端口21 sudo firewall-cmd --permanent --add-port=21/tcp sudo firewall-cmd --reload
如果您使用的是被动模式(假设使用40000-40100端口范围):
bash
# 开放端口21和被动端口范围40000-40100 sudo firewall-cmd --permanent --add-port=21/tcp sudo firewall-cmd --permanent --add-port=40000-40100/tcp sudo firewall-cmd --reload
检查当前防火墙规则:
bash
sudo firewall-cmd --list-all
如果您想暂时关闭防火墙(不推荐生产环境):
bash
# 停止防火墙 sudo systemctl stop firewalld # 禁用防火墙开机启动 sudo systemctl disable firewalld
步骤四:验证FTP服务
1. 创建测试用户(如果尚未创建)
bash
# 创建系统用户(设置密码后会提示输入密码) sudo useradd -m ftpuser sudo passwd ftpuser # 或者如果您想使用现有用户,确保其在vsftpd的用户列表中
2. 测试本地连接
bash
# 安装FTP客户端(如果尚未安装) sudo yum install -y ftp # 测试连接到本地FTP服务器 ftp localhost
3. 从远程客户端连接
在另一台计算机上(Windows/Linux/Mac):
-
打开文件资源管理器(Windows)或浏览器
-
在地址栏输入:
ftp://您的服务器IP地址 -
输入用户名和密码
-
如果连接成功,您应该能看到用户的Home目录内容
4. 使用命令行测试(在客户端机器上)
bash
# 安装ftp客户端(如果需要) # 对于Ubuntu/Debian: sudo apt install ftp # 对于CentOS/RHEL: sudo yum install ftp # 连接测试 ftp 您的服务器IP地址
额外提示:配置被动模式
如果您打算使用被动模式,请确保在 /etc/vsftpd/vsftpd.conf 中设置了以下参数:
bash
# 启用被动模式 pasv_enable=YES # 设置被动模式端口范围 pasv_min_port=40000 pasv_max_port=40100 # 如果您在NAT后面,可能需要设置外部IP # pasv_address=您的公网IP地址
修改配置后不要忘记重启服务:
bash
sudo systemctl restart vsftpd
检查服务状态
最后,确认服务仍在正常运行:
bash
systemctl status vsftpd ss -tlnp | grep vsftpd
现在您的 FTP 服务器应该已经配置完成并可以接受连接了。如果遇到任何连接问题,请检查防火墙设置和 VSBTPD 配置文件的权限相关设置。
注:实际撰写时可根据需求调整章节顺序或增删内容,例如增加性能优化或故障排查案例。


4737

被折叠的 条评论
为什么被折叠?



