Ubuntu 下使用 vsftpd 高效下载的实用技巧
一 基础准备与连通性
- 安装并启动服务:sudo apt-get install vsftpd;sudo systemctl start vsftpd;确认监听 21 端口:sudo netstat -nltp | grep 21。
- 防火墙放行:sudo ufw allow 20/tcp;sudo ufw allow 21/tcp。如使用被动模式,建议固定端口段并放行(见下文优化)。
- 匿名下载最简配置:在 /etc/vsftpd.conf 中设置 anonymous_enable=YES,重启服务即可;默认日志在 /var/log/vsftpd.log。
- 客户端连通性自检:ftp your_server_ip;登录后可用 ls、pwd、cd 等确认目录与权限。
二 命令行下载高效用法
- 交互式 ftp 常用命令
- 设定本地接收目录:lcd /your/local/dir;切换远端目录:cd /remote/dir。
- 传输模式:binary(二进制,适合压缩包、镜像、可执行文件等);ascii(纯文本)。
- 单文件:get remote_file;多文件:mget *.ext;上传:put local_file / mput *.ext。
- 关闭交互确认:prompt(批量 mget/mput 不再逐个询问);查看帮助:help;退出:bye。
- wget 递归镜像目录(适合整站/整目录下载)
- 基本:wget -nH -m --ftp-user=USER --ftp-password=PASS ftp://host/remote_dir/
- 目录层级控制:加 --cut-dirs=N 去掉前 N 层目录结构。
- 主动/被动模式:默认 PASV;若不通,加 --no-passive-ftp 改用主动模式。
- 大目录建议先打包再下载,效率更高。
三 被动模式与防火墙配置
- 服务端启用被动模式并固定端口段(便于防火墙放行):
- pasv_enable=YES;pasv_min_port=10000;pasv_max_port=11000。
- 防火墙放行:sudo ufw allow 21/tcp;sudo ufw allow 10000:11000/tcp。
- 如启用 FTPS:放行 990/tcp(控制通道),并确保证书路径正确。
四 常见下载失败排查清单
- 530 Login incorrect:检查用户名/密码;若启用本地用户,确认 local_enable=YES;必要时核对 PAM 与用户 shell(/sbin/nologin 可用但需配置正确)。
- 目录无法进入或列表为空:chroot 后目录需可访问;若需写入,设置 allow_writeable_chroot=YES(权衡安全)。
- 传输中断/速度异常:切换 binary;在复杂网络下尝试 --no-passive-ftp;检查被动端口段是否放行。
- 日志定位:查看 /var/log/vsftpd.log 获取具体错误码与阶段信息。
五 安全与性能优化要点
- 禁用匿名访问:anonymous_enable=NO;仅开放必要用户。
- 限制用户根目录:chroot_local_user=YES;必要时 allow_writeable_chroot=YES。
- 启用日志:xferlog_enable=YES;xferlog_std_format=YES,便于审计与排障。
- 速率与并发控制:local_max_rate=值(Bytes/s)限制单用户带宽;max_clients、max_per_ip 控制并发。
- 加密传输:ssl_enable=YES;force_local_data_ssl=YES;force_local_logins_ssl=YES;证书可用 /etc/ssl/certs/ssl-cert-snakeoil.pem 与 /etc/ssl/private/ssl-cert-snakeoil.key。