温馨提示×

Linux FTP服务器如何加密

小樊
47
2026-07-06 05:16:11
栏目: 云计算

在 Linux 上部署 加密的 FTP 服务器,通常有两种主流方案:

  1. FTPS(FTP over SSL/TLS) ✅ 推荐
  2. SFTP(SSH File Transfer Protocol) ✅ 更安全、更易维护

下面分别说明,并给出推荐方案


一、推荐方案:使用 SFTP(基于 SSH,自动加密)

⚠️ SFTP 不是 FTP,而是基于 SSH 的文件传输协议
✅ 所有数据(包括账号密码)全程加密
✅ 不需要额外证书,配置最简单

1️⃣ 安装 SSH(一般已安装)

sudo apt install openssh-server   # Debian/Ubuntu
sudo yum install openssh-server   # CentOS/RHEL

2️⃣ 启动并设置开机自启

sudo systemctl enable sshd
sudo systemctl start sshd

3️⃣ 创建专用 SFTP 用户

sudo useradd -m sftpuser
sudo passwd sftpuser

4️⃣ 限制用户只能使用 SFTP(可选)

编辑:

sudo vim /etc/ssh/sshd_config

添加:

Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

重启 SSH:

sudo systemctl restart sshd

✅ 客户端使用:

  • FileZilla(选择 SFTP
  • sftp sftpuser@服务器IP

二、传统 FTP + SSL/TLS(FTPS)

适合必须使用 FTP 协议的情况(如旧系统)

方案一:vsftpd + SSL(常见)

1️⃣ 安装 vsftpd

sudo apt install vsftpd

2️⃣ 生成 SSL 证书

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

3️⃣ 配置 vsftpd

编辑:

sudo vim /etc/vsftpd.conf

核心配置:

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES

ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key
force_local_data_ssl=YES
force_local_logins_ssl=YES

ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

重启:

sudo systemctl restart vsftpd

✅ 客户端选择 FTP over TLS (FTPS)


三、FTPS vs SFTP 对比(重要)

项目 SFTP FTPS
加密方式 SSH SSL/TLS
端口 22 21
配置难度 ✅ 简单 ❌ 较复杂
穿透防火墙 ✅ 好 ❌ 差
安全性 ✅ 高 ✅ 高
推荐程度 ⭐⭐⭐⭐⭐ ⭐⭐⭐

新系统 / 云服务器:首选 SFTP


四、客户端连接方式

FileZilla

  • SFTP:协议选 SFTP
  • FTPS:协议选 FTP over TLS

Linux 命令行

sftp user@ip

五、常见错误排查

  • 连接被拒绝 → 防火墙未放行端口
  • vsftpd 无法启动 → 检查证书路径
  • 用户无法登录 → SELinux / Chroot 设置问题

✅ 最终建议

如果你可以自由选择:

直接用 SFTP(SSH)

安全、简单、稳定、通用。

如果你愿意,我可以根据你的 Linux 发行版(Ubuntu / CentOS / Rocky 等) 给你一份 完整可复制的配置方案

0