温馨提示×

linux ftpserver怎么加密

小樊
45
2026-07-17 21:20:23
栏目: 网络安全

在 Linux 上搭建 加密的 FTP 服务器,推荐做法是使用 FTPS(FTP over SSL/TLS),而不是早期的 SFTP(那是 SSH 的一种,不是 FTP)。下面我按最常见、最安全的方式一步步说明。


一、推荐方案:vsftpd + SSL/TLS(FTPS)

1. 安装 vsftpd

# Debian / Ubuntu
sudo apt update
sudo apt install vsftpd

# CentOS / Rocky / Alma
sudo yum install vsftpd
# 或
sudo dnf install vsftpd

2. 生成 SSL 证书(加密核心)

方式一:自签名证书(测试/内网)

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

一路回车即可,Common Name 填服务器 IP 或域名


3. 配置 vsftpd 启用加密

编辑配置文件:

sudo vim /etc/vsftpd.conf

关键配置如下(直接追加或覆盖):

# 启用 SSL
ssl_enable=YES

# 禁止匿名
anonymous_enable=NO

# 本地用户登录
local_enable=YES
write_enable=YES

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

# 强制使用 TLS(推荐)
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

# 强制加密数据传输
force_local_data_ssl=YES
force_local_logins_ssl=YES

# 允许被动模式(云服务器必须)
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

# 限制用户访问家目录(可选)
chroot_local_user=YES
allow_writeable_chroot=YES

4. 开放防火墙端口

FTP 控制 + 被动端口

# firewalld
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
sudo firewall-cmd --reload

# iptables
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 30000:31000 -j ACCEPT

5. 重启 vsftpd

sudo systemctl restart vsftpd
sudo systemctl enable vsftpd

二、客户端如何连接(重要)

必须使用支持 FTPS 的客户端

客户端 说明
FileZilla 选择 FTP over TLS
WinSCP 协议选 FTP + TLS/SSL
lftp set ftp:ssl-force true

❌ 普通 ftp 命令 不支持加密


三、常见错误排查

1. 连接后提示“证书不受信任”

✅ 正常(自签名证书)
✅ 生产环境建议使用 Let’s Encrypt


2. 云服务器连不上

✅ 检查:

  • 安全组是否放行 21 + 被动端口
  • pasv_address 是否配置为公网 IP
pasv_address=你的公网IP

四、如果你想要的是 SFTP(SSH 文件传输)

⚠️ SFTP ≠ FTP

  • 端口:22
  • 无需额外安装 FTP 服务
  • 更安全、更简单
sudo systemctl enable sshd

客户端直接选 SFTP,不需要证书配置。


五、总结建议

场景 推荐
对外网、兼容传统 FTP ✅ vsftpd + FTPS
简单、安全、现代 ✅ SFTP(SSH)
明文 FTP ❌ 不安全

如果你愿意,可以告诉我:

  • ✅ 你的 Linux 发行版
  • ✅ 是否是云服务器
  • ✅ 只用内网还是公网访问

我可以给你一份完全可直接用的配置

0