一聚教程网:一个值得你收藏的教程网站

热门教程

Linux 服务器搭建如何配置 FTP 文件传输服务

时间:2026-08-27 08:18:48 编辑:袖梨 来源:一聚教程网

用vsftpd搭建FTP服务最稳妥,需禁用匿名访问、启用chroot锁定用户目录、配置被动模式端口范围、创建无shell权限专用用户,并开放防火墙21端口及被动端口段。

用 vsftpd 搭建 FTP 服务最稳妥,它轻量、安全、社区支持好,适合大多数场景。重点不是装上就行,而是让访问可控、传输不裸奔、防火墙不拦路。

选软件和装服务

vsftpd 是 Linux 下最常用的 FTP 服务器,Debian/Ubuntu 和 RHEL/CentOS 系统都原生支持:

  1. Ubuntu/Debian:sudo apt update && sudo apt install vsftpd
  2. RHEL/CentOS/Rocky Linux:sudo dnf install vsftpd(新版)或 sudo yum install vsftpd(旧版)
  3. 装完立即启用并启动:sudo systemctl enable --now vsftpd

关掉匿名登录,只认真实用户

默认配置允许匿名访问,生产环境必须禁用。编辑主配置文件:sudo nano /etc/vsftpd.conf,确保这几行明确设置:

  1. anonymous_enable=NO(彻底关闭匿名入口)
  2. local_enable=YES(允许系统本地用户登录)
  3. write_enable=YES(开启上传、删改等写操作)
  4. chroot_local_user=YES(把每个用户锁在自己家目录,防越权)
  5. allow_writeable_chroot=YES(配合上一条,否则 chroot 目录不能有写权限会报错)

改完保存,运行 sudo systemctl restart vsftpd 生效。

开防火墙端口,特别注意被动模式

FTP 控制连接走 21 端口,但数据传输在被动模式下会动态分配高位端口(如 50000–51000),必须显式放行:

  1. 先开放控制端口:sudo firewall-cmd --permanent --add-port=21/tcp
  2. 再定义被动端口范围(推荐 50000–51000):echo "pasv_min_port=50000" | sudo tee -a /etc/vsftpd.conf

    echo "pasv_max_port=51000" | sudo tee -a /etc/vsftpd.conf

  3. 然后开放这个范围:sudo firewall-cmd --permanent --add-port=50000-51000/tcp
  4. 重载防火墙:sudo firewall-cmd --reload

创建专用用户,不给 shell 权限

别直接用 root 或普通登录用户。新建一个仅用于 FTP 的账户:

  1. sudo useradd -m -s /usr/sbin/nologin ftpuser
  2. sudo passwd ftpuser(设密码)
  3. sudo chown ftpuser:ftpuser /home/ftpuser
  4. sudo chmod 750 /home/ftpuser

这样用户能登录 FTP,但无法通过 SSH 登录系统,也进不了其他目录。

验证是否跑通

用任意 FTP 客户端(如 FileZilla 或命令行 ftp your-server-ip)测试:

  1. 用刚建的 ftpuser 和密码登录
  2. 尝试上传一个测试文件,看是否成功
  3. 检查日志确认行为:sudo tail -f /var/log/vsftpd.log

如果连不上,优先查 systemctl status vsftpd、firewall-cmd --list-all、以及客户端是否设为被动模式(PASV)。

热门栏目