温馨提示×

linux ftpserver怎样搭建

小樊
36
2026-09-11 04:54:41
栏目: 智能运维

在 Linux 上搭建 FTP 服务器,最常用、稳定、简单的是 vsftpd(Very Secure FTP Daemon)。下面以 CentOS / Rocky / Alma(RHEL 系)Ubuntu / Debian 为例,手把手说明。


一、安装 vsftpd

1. CentOS / Rocky / Alma

sudo dnf install -y vsftpd
# 或旧版 CentOS
sudo yum install -y vsftpd

2. Ubuntu / Debian

sudo apt update
sudo apt install -y vsftpd

二、启动并设置开机自启

sudo systemctl start vsftpd
sudo systemctl enable vsftpd

查看状态:

systemctl status vsftpd

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

编辑配置文件:

sudo vim /etc/vsftpd/vsftpd.conf

最常用基础配置

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES

保存后重启:

sudo systemctl restart vsftpd

四、创建 FTP 用户

sudo useradd -m ftpuser
sudo passwd ftpuser

限制用户只能 FTP(不能登录系统,可选):

sudo usermod -s /sbin/nologin ftpuser

五、防火墙设置

1. 开放 21 端口

# firewalld
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --reload

# iptables
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT

2. 如果使用被动模式(推荐)

vsftpd.conf 中添加:

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

防火墙开放:

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

六、SELinux(仅 RHEL 系)

如果登录后无法写入:

sudo setsebool -P ftp_home_dir on
sudo setsebool -P allow_ftpd_full_access on

七、测试 FTP

本地测试

ftp localhost

远程测试

ftp 服务器IP

或用 FileZilla:

  • 主机:服务器IP
  • 协议:FTP
  • 用户名 / 密码:刚创建的

八、常见问题

连接被拒绝

  • vsftpd 没启动
  • 防火墙未放行 21

能登录但不能上传

  • write_enable=YES
  • 目录权限
  • SELinux

被动模式连不上

  • 未配置 pasv 端口
  • 防火墙未放行

九、进阶(可选)

  • 虚拟用户(更安全)
  • FTPS(SSL 加密)
  • 配额限制
  • 限制用户根目录(chroot)

如果你告诉我:

  • 使用的 Linux 发行版
  • 是否需要加密(FTPS)
  • 是给内部用还是公网

我可以给你 更精确的配置方案

0