温馨提示×

如何在CentOS搭建FTPServer

小樊
45
2026-07-20 13:21:13
栏目: 智能运维

CentOS 上搭建 FTP Server(vsftpd) 的完整步骤如下,适用于 CentOS 7 / 8 / Stream。我按 最常用、最稳定 的方式讲解,并包含 被动模式、用户权限、防火墙、SELinux 等常见坑点。


一、安装 vsftpd

yum install -y vsftpd

CentOS 8 / Stream 用:

dnf install -y vsftpd

二、启动并设置开机自启

systemctl start vsftpd
systemctl enable vsftpd

查看状态:

systemctl status vsftpd

三、基础配置(关键)

编辑配置文件:

vim /etc/vsftpd/vsftpd.conf

✅ 推荐基础配置(复制即可)

# 禁止匿名登录
anonymous_enable=NO

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

# 允许上传
write_enable=YES

# 本地用户 umask
local_umask=022

# 禁止用户切换到根目录(安全)
chroot_local_user=YES

# 允许 chroot 目录可写(CentOS 7+ 必须)
allow_writeable_chroot=YES

# 使用被动模式(非常重要)
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

# 监听 IPv4
listen=YES
listen_ipv6=NO

四、创建 FTP 用户

1️⃣ 创建用户(禁止 SSH 登录)

useradd -d /home/ftpuser -s /sbin/nologin ftpuser

2️⃣ 设置密码

passwd ftpuser

3️⃣ 设置目录权限

chown -R ftpuser:ftpuser /home/ftpuser
chmod 755 /home/ftpuser

五、防火墙配置(非常重要)

开放 FTP 端口

firewall-cmd --permanent --add-service=ftp
firewall-cmd --permanent --add-port=30000-31000/tcp
firewall-cmd --reload

六、SELinux 配置(最常见问题)

查看 SELinux 状态

getenforce

如果是 Enforcing,执行:

setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on

✅ 否则会出现 能登录但不能上传/下载


七、重启 vsftpd

systemctl restart vsftpd

八、测试 FTP

1️⃣ 本地测试

ftp localhost

2️⃣ 客户端工具

  • Windows:FileZilla
  • Linux:
ftp ip地址

九、常见错误及解决

❌ 530 Login incorrect

  • 用户不存在
  • 密码错误
  • /sbin/nologin 未加入 /etc/shells

修复:

echo /sbin/nologin >> /etc/shells

❌ 能登录但不能上传

  • SELinux 没开
  • write_enable=NO
  • 目录权限不够

❌ 被动模式连不上

  • 防火墙没开被动端口
  • pasv_address 未配置(云服务器需配公网 IP)
pasv_address=你的公网IP

十、安全建议 ✅

✅ 禁止匿名
✅ 限制用户 chroot
✅ 使用被动模式
✅ 不要用 root
✅ 云服务器记得安全组放行端口


十一、可选:虚拟用户 / SFTP / TLS

如果你需要:

  • 虚拟用户(更安全)
  • FTPS(FTP + SSL)
  • 代替 FTP 的 SFTP

可以继续告诉我你的场景,我可以给你 进阶配置方案

需要我帮你写成 一键脚本 吗?

0