vsftpd(最常用)和ProFTPD两种主流方案的详细步骤:
sudo apt update
sudo apt install vsftpd
备份原始配置文件:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup
编辑配置文件:
sudo nano /etc/vsftpd.conf
# 允许本地用户登录
local_enable=YES
# 允许写入操作
write_enable=YES
# 设置本地用户的umask
local_umask=022
# 允许匿名登录(可选)
anonymous_enable=NO
# 禁止匿名用户上传(如果启用匿名登录)
anon_upload_enable=NO
# 限制用户只能访问其家目录
chroot_local_user=YES
allow_writeable_chroot=YES
# 被动模式设置(适合防火墙/NAT后)
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
pasv_address=你的公网IP地址
# 使用SSL/TLS(可选)
ssl_enable=NO # 如需启用SSL,设为YES并配置证书
创建专用FTP用户(非登录用户):
sudo useradd -m ftpuser -s /usr/sbin/nologin
sudo passwd ftpuser
或使用现有系统用户:
# 允许现有用户登录FTP
sudo usermod -s /bin/bash 用户名
sudo systemctl restart vsftpd
sudo systemctl enable vsftpd
sudo systemctl status vsftpd
如果使用UFW防火墙:
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp # 被动模式端口范围
sudo apt install proftpd
安装过程中选择:
编辑主配置文件:
sudo nano /etc/proftpd/proftpd.conf
添加或修改以下内容:
ServerName "Your FTP Server"
ServerType standalone
DefaultRoot ~ # 限制用户到其家目录
RequireValidShell off # 允许无shell用户登录
# 创建用户组
sudo groupadd ftpgroup
# 创建用户(无登录权限)
sudo useradd -g ftpgroup -d /var/ftp -s /bin/false ftpuser
sudo passwd ftpuser
# 设置目录权限
sudo chown -R ftpuser:ftpgroup /var/ftp
sudo chmod -R 755 /var/ftp
sudo systemctl restart proftpd
sudo systemctl enable proftpd
ftp 服务器IP地址
# 或使用lftp(功能更强)
lftp ftp://用户名@服务器IP地址
ftp://服务器IP地址使用SFTP替代FTP(FTP传输不加密):
# SFTP已随SSH服务器自动启用
sudo apt install openssh-server
配置TLS/SSL加密(vsftpd):
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
然后在配置文件中启用SSL。
限制用户访问:
userlist_enable=YES 控制允许/拒绝的用户userlist_file=/etc/vsftpd.userlist日志监控:
# 查看vsftpd日志
sudo tail -f /var/log/vsftpd.log
/etc/shells中
无法上传文件:检查目录权限和配置中的write_enable
被动模式问题:正确配置pasv_address(公网IP)
考虑到FTP协议的不安全性,建议考虑:
注意:FTP协议默认不加密,生产环境建议使用SFTP或配置SSL/TLS加密。