在 Linux 上配置 FTPServer(FTP 服务器) 常见有三种方式:
✅ vsftpd(最常用、稳定)
✅ ProFTPD
✅ Pure-FTPd
下面以 vsftpd + 本地用户 + 被动模式 为例,给你一套从安装到可用的完整配置流程(适用于 CentOS / Rocky / Alma / RHEL / Ubuntu / Debian)。
yum install -y vsftpd
apt update
apt install -y vsftpd
systemctl enable vsftpd
systemctl start vsftpd
systemctl status vsftpd
配置文件路径:
/etc/vsftpd/vsftpd.conf # CentOS/RHEL
/etc/vsftpd.conf # Ubuntu
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
# 基本设置
listen=YES
listen_ipv6=NO
# 禁止匿名登录
anonymous_enable=NO
# 允许本地用户
local_enable=YES
write_enable=YES
# 本地用户家目录
local_root=/data/ftp
# 权限掩码
local_umask=022
# 被动模式(非常重要)
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
# 安全
chroot_local_user=YES
allow_writeable_chroot=YES
# 日志
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
useradd -m ftpuser
passwd ftpuser
mkdir -p /data/ftp
chown ftpuser:ftpuser /data/ftp
chmod 755 /data/ftp
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-port=30000-31000/tcp
firewall-cmd --reload
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 30000:31000 -j ACCEPT
查看状态:
getenforce
setenforce 0
setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on
ftp localhost
服务器IP21ftpuser/etc/shells 中无该用户 shellpasv_address 未设置(云服务器)pasv_address=公网IP
| 方式 | 推荐 |
|---|---|
| FTP | ❌ 明文 |
| FTPS(FTP over SSL) | ✅ |
| SFTP(SSH) | ✅✅(最推荐) |
如果你需要:
告诉我你的 Linux 发行版 + 使用场景,我可以直接给你定制配置。