测试 Linux FTP 服务器一般从 连通性、功能、权限、安全性 几个方面进行。下面给你一套常用且实用的测试流程,涵盖命令行和工具方式。
常见 FTP 服务:vsftpd、proftpd
systemctl status vsftpd
# 或
systemctl status proftpd
如未启动:
systemctl start vsftpd
systemctl enable vsftpd
FTP 默认端口是 21
ss -lntp | grep 21
# 或
netstat -lntp | grep 21
ftp localhost
示例:
Name: testuser
Password: ******
ftp> ls
ftp> put test.txt
ftp> get test.txt
ftp> bye
✅ 能登录、列目录、上传下载 → 基本功能正常
功能更强,支持被动模式
lftp ftp://user@localhost
测试:
ls
put test.txt
get test.txt
ftp -A localhost
或:
ftp localhost
ftp> passive
Passive mode: off
ftp localhost
ftp> passive
Passive mode: on
⚠️ 如果被动模式失败,通常是:
firewall-cmd --list-all
放行 FTP:
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload
如用被动模式,还需放行端口范围(如 30000-31000)
查看状态:
getenforce
临时测试:
setenforce 0
如 FTP 正常,说明是 SELinux 问题,可配置:
setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on
ftp localhost
测试:
ftp localhost
Name: anonymous
Password: (空或邮箱)
测试:
从另一台机器:
ftp 服务器IP
或使用:
lftp ftp://user@服务器IP
⚠️ 注意:
tail -f /var/log/vsftpd.log
journalctl -u vsftpd -f
| 问题 | 原因 |
|---|---|
| 能连但不能列目录 | 被动模式端口未放行 |
| 530 Login incorrect | 用户名/密码或 PAM 配置 |
| 550 Permission denied | 目录权限 / SELinux |
| 连接超时 | 防火墙 / 云安全组 |
如果你愿意,可以告诉我:
我可以给你针对性的配置和排错方案。