温馨提示×

怎么配置Linux FTP服务器

小樊
33
2026-08-01 06:00:39
栏目: 云计算

配置 Linux FTP 服务器常见有两种主流方案:vsftpd(最常用、安全)Pure-FTPd。下面以 vsftpd 为例,给你一个从安装到可用、再到安全加固的完整配置流程(适用于 CentOS / Rocky / Alma / RHEL / Ubuntu / Debian)。


一、安装 vsftpd

✅ CentOS / Rocky / Alma / RHEL

yum install -y vsftpd

✅ Ubuntu / Debian

apt update
apt install -y vsftpd

二、启动并设置开机自启

systemctl start vsftpd
systemctl enable vsftpd

查看状态:

systemctl status vsftpd

三、基础配置(/etc/vsftpd/vsftpd.conf)

编辑配置文件:

vim /etc/vsftpd/vsftpd.conf

✅ 最常用基础配置(推荐)

# 禁止匿名登录
anonymous_enable=NO

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

# 允许上传
write_enable=YES

# 本地用户 umask
local_umask=022

# 禁止 chroot 目录可写(重要)
allow_writeable_chroot=YES

# 限制用户只能访问自己的家目录
chroot_local_user=YES

# 启用被动模式(云服务器必须)
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

四、创建 FTP 用户

1️⃣ 创建用户

useradd -m ftpuser
passwd ftpuser

2️⃣ 设置家目录权限

chown ftpuser:ftpuser /home/ftpuser
chmod 755 /home/ftpuser

五、防火墙配置

✅ firewalld(CentOS / Rocky)

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

✅ UFW(Ubuntu)

ufw allow 21/tcp
ufw allow 30000:31000/tcp
ufw reload

六、SELinux 配置(如果是 CentOS / RHEL)

查看状态:

getenforce

如果是 Enforcing,需要放行 FTP:

setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on

七、重启 vsftpd

systemctl restart vsftpd

八、测试 FTP

本地测试

ftp localhost

远程测试(Windows / Linux)

ftp 服务器IP

或使用工具:

  • FileZilla
  • WinSCP

九、常见问题排查

❌ 无法连接

  • 检查 21 端口是否开放
  • 云服务器安全组是否放行 21 + 被动端口

❌ 530 Login incorrect

  • 用户名密码错误
  • PAM 限制(检查 /etc/pam.d/vsftpd

❌ 550 Permission denied

  • 目录权限
  • SELinux 未放行

❌ 被动模式失败

  • 未配置 pasv_address
pasv_address=公网IP

十、安全建议(生产环境)

✅ 禁止 root 登录
✅ 使用 SFTP(SSH) 替代 FTP(更安全)
✅ 限制用户列表
✅ 使用 TLS 加密(FTPS)


十一、可选:启用 FTPS(加密)

如果你需要 加密 FTP(TLS),我可以单独给你一份配置方案。


✅ 总结

项目 推荐
FTP 服务 vsftpd
模式 被动模式
用户 本地用户
安全 chroot + 防火墙 + SELinux
生产 更推荐 SFTP

如果你告诉我:

  • ✅ 系统版本
  • ✅ 是否是云服务器
  • ✅ 是否必须 FTP(还是可用 SFTP)

我可以给你 完全贴合你环境的配置方案

0