在 Ubuntu 上给 FTP 服务器加密,通常指的是 FTPS(FTP over SSL/TLS),而不是明文 FTP。下面我按从准备到验证的完整流程给你讲,最常用、生产环境推荐的做法是 vsftpd + SSL/TLS。
✅ Ubuntu + vsftpd + SSL/TLS(FTPS)
✅ 使用 显式加密(Explicit FTPS),兼容性最好
✅ 证书可用 Let’s Encrypt(公网) 或 自签名(内网)
sudo apt update
sudo apt install vsftpd -y
sudo openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout /etc/ssl/private/vsftpd.key \
-out /etc/ssl/certs/vsftpd.crt
填写信息示例:
sudo apt install certbot -y
sudo certbot certonly --standalone -d ftp.example.com
证书路径:
/etc/letsencrypt/live/ftp.example.com/
编辑配置文件:
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
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key
✅ 显式 FTPS(客户端主动加密)
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
pasv_address=你的服务器公网IP或域名
防火墙放行:
sudo ufw allow 30000:31000/tcp
sudo systemctl restart vsftpd
sudo systemctl enable vsftpd
sudo apt install lftp
lftp -u 用户名 服务器IP
set ftp:ssl-force true
ls
21 + 30000-31000sudo journalctl -u vsftpd
✅ 正常,客户端选择“信任”即可
⚠️ FTP 是老协议,除非必须用,否则不建议使用
| 方案 | 说明 |
|---|---|
| SFTP | SSH 自带,自动加密(端口 22) |
| WebDAV over HTTPS | 适合文件管理 |
| Rsync over SSH | 适合同步 |
如果只是文件传输,SFTP 比 FTPS 更好。
你可以直接告诉我:
1️⃣ Ubuntu 版本(20.04 / 22.04 / 24.04)
2️⃣ 内网还是公网
3️⃣ 是 FTPS 还是 SFTP
4️⃣ 是否用 FileZilla / lftp / 代码连接
我可以给你 完全针对性的配置 ✅