温馨提示×

centos vsftp怎样加密传输

小樊
44
2026-10-23 07:53:11
栏目: 网络安全

在 CentOS 上使用 vsftpd 实现“加密传输”,通常有两种主流方式:

  1. FTPS(FTP over SSL/TLS) ✅ 推荐
  2. SFTP(SSH File Transfer Protocol) ❌ 不属于 vsftpd(是 SSH)

下面重点讲 vsftpd + SSL/TLS(FTPS) 的加密配置方法。


一、确认环境

cat /etc/redhat-release
rpm -qa | grep vsftpd

如未安装:

yum install -y vsftpd

二、生成 SSL 证书(自签或 CA)

1️⃣ 生成自签名证书(测试用)

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

生产环境建议使用受信任 CA 签发的证书


三、配置 vsftpd 支持加密

编辑配置文件:

vi /etc/vsftpd/vsftpd.conf

基础加密配置(必加)

# 启用 SSL
ssl_enable=YES

# 证书和私钥
rsa_cert_file=/etc/vsftpd/vsftpd.crt
rsa_private_key_file=/etc/vsftpd/vsftpd.key

# 强制加密登录
allow_anon_ssl=NO
force_local_logins_ssl=YES
force_local_data_ssl=YES

# 协议版本(推荐 TLS)
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

四、被动模式(云服务器必配)

如果是 CentOS + 云服务器,必须配置被动端口:

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

防火墙放行:

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

五、启动 vsftpd

systemctl restart vsftpd
systemctl enable vsftpd

六、客户端连接方式

客户端 方式
FileZilla 协议选 FTP over TLS
lftp set ftp:ssl-force true
浏览器 不支持(不推荐)

lftp 示例

lftp -u user ftp://IP
set ftp:ssl-force true

七、常见问题

❓ 连接失败 / 550 错误

  • 检查证书路径权限
  • 确保 force_local_data_ssl=YES

❓ 云服务器连不上

  • 没配 pasv_address
  • 安全组未放行被动端口

八、FTPS vs SFTP 区别(重要)

类型 端口 服务
FTPS 21 vsftpd
SFTP 22 OpenSSH

vsftpd 只能做 FTPS,不能做 SFTP


如果你需要:

  • ✅ 配置 虚拟用户 + SSL
  • ✅ 使用 Let’s Encrypt 证书
  • ✅ Docker 中 vsftpd 加密

可以继续问我。

0 踩