Ubuntu FTP启用SSL的实操指南
一 准备与证书
sudo apt update && sudo apt install vsftpdsudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.crtsudo cat /etc/ssl/certs/vsftpd.crt /etc/ssl/private/vsftpd.key > /etc/ssl/certs/vsftpd.pemsudo apt install certbot python3-certbot-nginxsudo certbot certonly --standalone -d yourdomain.com/etc/letsencrypt/live/yourdomain.com/fullchain.pem 与 /etc/letsencrypt/live/yourdomain.com/privkey.pemsudo chmod 600 /etc/ssl/private/vsftpd.keysudo chmod 644 /etc/ssl/certs/vsftpd.crt 或 /etc/ssl/certs/vsftpd.pem二 配置 vsftpd 启用 SSL
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.origsudo nano /etc/vsftpd.conf,常用关键项如下(按需调整)
ssl_enable=YESallow_anon_ssl=NOforce_local_logins_ssl=YESforce_local_data_ssl=YESssl_tlsv1=YESssl_sslv2=NOssl_sslv3=NOrsa_cert_file=/etc/ssl/certs/vsftpd.pem 与 rsa_private_key_file=/etc/ssl/private/vsftpd.keyrsa_cert_file=/etc/letsencrypt/live/yourdomain.com/fullchain.pem 与 rsa_private_key_file=/etc/letsencrypt/live/yourdomain.com/privkey.pemlisten=YESlisten_ipv6=NOanonymous_enable=NOlocal_enable=YESwrite_enable=YESchroot_local_user=YESpam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YESssl_cert_file/ssl_key_file,若配置项不存在可忽略;以 rsa_cert_file/rsa_private_key_file 为准更通用。三 防火墙与被动模式端口
sudo ufw allow 21/tcpsudo ufw allow 990/tcpsudo ufw allow 40000:50000/tcp四 启动与验证
sudo systemctl restart vsftpdsudo systemctl status vsftpd(异常时 journalctl -xeu vsftpd 排查)lftp -u youruser -p 21 yourdomain.com -e "set ftp:ssl-force true; ls; quit"五 常见问题与优化
vsftpd.conf 增加:pasv_enable=YES、pasv_min_port=40000、pasv_max_port=50000,并放行对应端口段。/var/log/vsftpd.log 或 journalctl -u vsftpd 的输出,定位握手失败、证书不匹配等问题。