CentOS配置vsftpd服务器

在CentOS系统中搭建FTP服务,推荐使用 vsftpd(Very Secure FTP Daemon),以下是详细步骤:


1. 安装 vsftpd

bash 复制代码
sudo yum install vsftpd -y

2. 配置 vsftpd

编辑配置文件 /etc/vsftpd/vsftpd.conf

bash 复制代码
sudo vi /etc/vsftpd/vsftpd.conf
关键配置修改
ini 复制代码
# 禁用匿名登录(安全考虑)
anonymous_enable=NO

# 允许本地用户登录
local_enable=YES

# 启用写权限(上传/删除文件)
write_enable=YES

# 将用户限制在其主目录(防越权)
chroot_local_user=YES
allow_writeable_chroot=YES

# 设置本地用户掩码(文件权限)
local_umask=022

# 启用被动模式(解决客户端连接问题)
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
可选配置
ini 复制代码
# 启用日志记录
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log

# 自定义欢迎标语
ftpd_banner=Welcome to My FTP Server

3. 启动 vsftpd 服务

bash 复制代码
sudo systemctl start vsftpd
sudo systemctl enable vsftpd# 开机自启

4. 防火墙配置

开放 FTP 服务端口(默认 21)和被动模式端口范围:

bash 复制代码
sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
sudo firewall-cmd --reload

5. SELinux 设置

bash 复制代码
# 检查 SELinux 状态
getenforce

# 若为 Enforcing,执行:
sudo setsebool -P ftpd_full_access on

6. 创建 FTP 用户

方法一:使用现有系统用户

确保用户有合法 Shell(如 /bin/bash):

bash 复制代码
# 示例:创建用户 ftpuser
sudo useradd -m -s /bin/bash ftpuser
sudo passwd ftpuser# 设置密码
方法二:创建虚拟用户(更安全)
  1. 创建仅 FTP 使用的用户(无登录权限):
bash 复制代码
sudo useradd -d /var/ftp/virtual_user -s /sbin/nologin virtual_user
sudo chmod 755 /var/ftp/virtual_user
sudo chown virtual_user:virtual_user /var/ftp/virtual_user

7. 测试 FTP 连接

使用客户端(如 FileZilla)连接:

  • 协议: FTP
  • 主机: 服务器 IP
  • 用户名/密码: 设置的账户
  • 端口: 21

8. 常见问题解决

连接超时/失败
  • 检查防火墙是否放行端口 2130000-31000
  • 确保 vsftpd 服务运行:sudo systemctl status vsftpd
无法上传文件
  • 确保目录权限正确(用户拥有写入权):
bash 复制代码
sudo chown -R ftpuser:ftpuser /home/ftpuser
  • 检查配置文件中的 write_enable=YES
被动模式错误
  • 在客户端设置 传输模式主动(Port)(部分网络环境下被动模式可能被阻)。

安全增强建议

  1. 使用 SSL/TLS 加密
bash 复制代码
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

在配置文件中添加:

ini 复制代码
ssl_enable=YES
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
  1. 限制用户访问
ini 复制代码
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO# 仅允许列表中的用户

完成以上步骤后,您的 FTP 服务即可安全运行!如有特殊需求(如匿名访问),可调整相应配置参数。


重要命令记录

bash 复制代码
sudo systemctl restart vsftpd
相关推荐
Maynor99636 分钟前
「原子弹爆炸」级别:Astra 复刻游戏合集(含实机截图)
java·linux·运维·数据库·gpt·游戏
CV艺术家42 分钟前
openssL生成免费的证书
java·linux·服务器
蓝速科技1 小时前
蓝速科技丨多网点涉外窗口翻译机批量部署实战指南
服务器·数据库·人工智能·缓存·语音识别
脚踏实地,坚持不懈!1 小时前
Android 系统工程师(性能/功耗/稳定性)岗位问题深度解析:从内核源码到实战排查(完善版)
android·linux·运维·服务器
0+1111 小时前
Linux --进程信号
linux·运维·服务器
盟道科技1 小时前
电商小程序SKU数据模型设计:SPU、规格组合、库存与价格的工程实践
服务器·小程序·apache
Lethehong1 小时前
服务器越来越多怎么统一监控?Beszel 接入 Agent、SMTP 告警与公网访问
运维·服务器
翼龙云_cloud1 小时前
阿里云国际代理商:2026零基础如何使用轻量应用服务器搭建独立站?
运维·服务器·阿里云·云计算
土星云SaturnCloud1 小时前
VILA 视觉语言模型边缘部署实战
服务器·人工智能·语言模型·自然语言处理·边缘计算
木卫四科技1 小时前
从函数劫持到智能体控制平面:Hook 如何从 Linux-Android 演化到 Agent Runtime
android·linux·人工智能·安全