下面以 Debian 上常见的 FTP/FTPS 服务器(vsftpd + SSL/TLS) 为例,系统性地说明 如何测试 FTPServer(FTP over SSL/TLS),包括功能测试、加密验证、常见问题排查。
sudo systemctl status vsftpd
如未安装:
sudo apt update
sudo apt install vsftpd
编辑配置文件:
sudo nano /etc/vsftpd.conf
关键配置示例:
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.key
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
证书若不存在,可用:
sudo openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout /etc/ssl/private/vsftpd.key \
-out /etc/ssl/certs/vsftpd.pem
重启服务:
sudo systemctl restart vsftpd
lftp(最推荐)sudo apt install lftp
lftp -u 用户名,密码 ftps://服务器IP
或指定端口:
lftp -u 用户名,密码 ftps://服务器IP:21
lftp :~> set ftp:ssl-force true
lftp :~> set ftp:ssl-protect-data true
lftp :~> ls
✅ 如果 不报 SSL 错误,说明 FTPS 正常。
curl(快速验证)curl -v --ftp-ssl --user 用户名:密码 ftp://服务器IP/
成功特征:
SSL connectionopenssl(底层 SSL 测试)测试 控制连接加密:
openssl s_client -connect 服务器IP:21 -starttls ftp
成功标志:
Verify return code: 0 (ok)
服务器IP21✅ 成功会提示:
“已通过 TLS 加密连接”
lftp
set ftp:passive-mode on
open ftps://服务器IP
ls
如失败,检查:
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
并放行防火墙:
sudo ufw allow 30000:31000/tcp
put test.txt
get test.txt
ftp -p localhost
| 类型 | 配置 |
|---|---|
| 本地用户 | local_enable=YES |
| 匿名 | anonymous_enable=YES |
sudo ufw allow 21/tcp
sudo ufw allow 30000:31000/tcp
getenforce
sudo tail -f /var/log/vsftpd.log
或:
journalctl -u vsftpd -f
| 错误 | 原因 | 解决 |
|---|---|---|
| 530 Login incorrect | 密码 / PAM | 检查 /etc/pam.d/vsftpd |
| SSL handshake failed | 证书问题 | 检查证书路径 |
| 425 Unable to build data connection | 被动端口 | 开放 PASV 端口 |
| 无法连接 | 防火墙 | 检查 21 / PASV |
如果你愿意,我可以:
只要告诉我你的 Debian 版本和用途(内网 / 公网 / 云服务器)。