配置 Linux FTP 服务器(以 vsftpd 为例,最常用、稳定)可以分为以下几个步骤。这里以 Ubuntu / Debian / CentOS 为例说明。
sudo apt update
sudo apt install vsftpd -y
sudo yum install vsftpd -y
# 或
sudo dnf install vsftpd -y
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
查看状态:
sudo systemctl status vsftpd
配置文件路径:
/etc/vsftpd.conf
备份原配置:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
# 禁止匿名登录
anonymous_enable=NO
# 允许本地用户登录
local_enable=YES
# 允许上传文件
write_enable=YES
# 本地用户 umask
local_umask=022
# 限制用户只能访问自己的家目录(重要)
chroot_local_user=YES
# 允许写 chroot(vsftpd 3.0+ 必须)
allow_writeable_chroot=YES
# 启用日志
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
# 被动模式(推荐)
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
sudo useradd -m ftpuser
sudo passwd ftpuser
设置家目录权限(防止 chroot 报错):
sudo chmod 755 /home/ftpuser
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 30000:31000/tcp
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
sudo firewall-cmd --reload
如果 SELinux 开启,需要允许 FTP:
sudo setsebool -P ftp_home_dir on
sudo setsebool -P allow_ftpd_full_access on
sudo systemctl restart vsftpd
ftp your_server_ip
连接方式:
如果你需要 FTP over TLS:
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.key
并生成证书:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/vsftpd.key \
-out /etc/ssl/certs/vsftpd.pem
| 问题 | 解决方法 |
|---|---|
| 530 Login incorrect | 检查用户密码、PAM 配置 |
| 500 OOPS: chroot | 设置 allow_writeable_chroot=YES |
| 无法连接 | 检查防火墙、SELinux、被动端口 |
| 上传失败 | 检查目录权限 |
如果你愿意,我可以:
只要告诉我你的 Linux 版本和使用场景即可。