温馨提示×

Ubuntu FTP如何配置SSL

小樊
49
2026-08-02 12:16:06
栏目: 云计算

下面以 Ubuntu + vsftpd 为例,介绍如何为 FTP 配置 SSL/TLS(FTPS),这是最常见、也是官方推荐的做法。


一、安装 vsftpd

sudo apt update
sudo apt install vsftpd -y

二、生成 SSL 证书

1️⃣ 使用自签名证书(测试/内网推荐)

sudo openssl req -x509 -nodes -days 365 \
  -newkey rsa:2048 \
  -keyout /etc/ssl/private/vsftpd.key \
  -out /etc/ssl/certs/vsftpd.crt

按提示填写信息即可,证书有效期 365 天


2️⃣(可选)使用 Let’s Encrypt(公网服务器)

sudo apt install certbot -y
sudo certbot certonly --standalone -d ftp.example.com

证书路径通常为:

/etc/letsencrypt/live/ftp.example.com/fullchain.pem
/etc/letsencrypt/live/ftp.example.com/privkey.pem

三、配置 vsftpd 启用 SSL

编辑配置文件:

sudo nano /etc/vsftpd.conf

✅ 基础 SSL 配置(推荐)

# 启用 SSL
ssl_enable=YES

# 禁止匿名用户使用 SSL
allow_anon_ssl=NO

# 强制本地用户使用 SSL
force_local_data_ssl=YES
force_local_logins_ssl=YES

# SSL 证书路径
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key

# 禁用 SSL v2/v3,使用 TLS
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

# 提高安全性
require_ssl_reuse=NO
ssl_ciphers=HIGH

✅ 被动模式(FTP over TLS 必须)

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
pasv_address=你的服务器公网IP

四、重启 vsftpd

sudo systemctl restart vsftpd
sudo systemctl enable vsftpd

五、防火墙配置

sudo ufw allow 21/tcp
sudo ufw allow 30000:31000/tcp
sudo ufw reload

六、客户端连接方式

客户端 连接方式
FileZilla 协议选择 FTP over TLS
WinSCP 协议选择 FTP + TLS/SSL
lftp set ftp:ssl-force true

⚠️ 不要使用 SFTP(SSH),那是完全不同的协议


七、常见问题排查

❌ 530 Login incorrect

  • 确认用户是本地用户
  • 检查 /etc/shells
  • 禁用 pam 限制(必要时)

❌ 无法建立 TLS 连接

  • 确认端口 21 已开放
  • 被动端口范围已放行
  • 证书路径正确

❌ 证书不受信任

  • 自签名证书需手动信任
  • 公网建议使用 Let’s Encrypt

八、安全建议 ✅

  • ✅ 禁用匿名登录
  • ✅ 只允许本地用户
  • ✅ 使用 TLS 1.2+
  • ✅ 限制被动端口范围
  • ✅ 配合 Fail2ban 防暴力破解

如果你需要:

  • Pure-FTPd 配置 SSL
  • ProFTPD 配置 TLS
  • 只允许特定用户使用 FTPS
  • Docker 环境 FTP + SSL

告诉我你的具体环境,我可以给你定制配置。

0