在 CentOS 上配置 VSFTPD 加密传输,其实有几种成熟的实现方案可供选择。SSL/TLS、SFTP、FTPES 各有适用的场景与优势,下面逐一详细说明。
方法一:使用 SSL/TLS 加密
安装 SSL/TLS 证书:
- 推荐从 Let's Encrypt 或其他受信任的证书颁发机构获取免费的 SSL/TLS 证书,生产环境务必走正规途径申请。
- 若仅用于测试环境,可使用
openssl生成自签名证书快速验证——但请勿在生产环境中使用自签名证书。
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/vsftpd.pem -out /etc/pki/tls/certs/vsftpd.pem配置 VSFTPD:
- 编辑
/etc/vsftpd/vsftpd.conf文件,添加或修改以下参数以启用 SSL/TLS 加密:
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/pki/tls/certs/vsftpd.pem rsa_private_key_file=/etc/pki/tls/private/vsftpd.pem- 编辑
重启 VSFTPD 服务使配置生效:
systemctl restart vsftpd
方法二:使用 SFTP(SSH File Transfer Protocol)
SFTP 本质上是 SSH 自带的文件传输功能,具备较高的安全性,且无需单独配置 FTP 证书,管理更简便。
首先确认 OpenSSH 服务器是否已安装,若未安装则直接执行安装命令:
yum install openssh-server启动 SSH 服务并设置开机自启动:
systemctl start sshd systemctl enable sshd不要忘记配置防火墙——放行默认端口 22:
firewall-cmd --permanent --add-service=ssh firewall-cmd --reload客户端连接时使用
sftp命令,与 SSH 登录采用同一套认证体系:sftp username@hostname
方法三:使用 FTPES(FTP over Explicit TLS)
FTPES 是 FTP 协议的扩展版本,客户端与服务端协商后显式启用 TLS 加密,兼容性表现良好。
证书准备方式与第一种方法中的步骤 1 完全相同,自签名证书或正式证书均可使用。
编辑 VSFTPD 配置文件,配置项与 SSL/TLS 方案几乎一致——实际上两者共用同一套 SSL 框架:
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/pki/tls/certs/vsftpd.pem rsa_private_key_file=/etc/pki/tls/private/vsftpd.pem同样需要重启 VSFTPD 服务:
systemctl restart vsftpd
注意事项
- 客户端必须支持您选用的加密协议——部分老旧 FTP 客户端可能无法兼容 TLS 或 SFTP,请提前确认客户端能力。
- 生产环境强烈建议使用由正式证书颁发机构(CA)签发的证书,自签名证书仅适合内部测试场景。
- 证书具有有效期,需定期更新,否则加密传输将失效,影响数据传输安全。
以上三种方案覆盖了从传统 FTP 加密到 SSH 协议的全场景需求。实际选择取决于客户端兼容性要求与运维管理习惯。完成配置后,建议全面测试一遍,确认加密传输功能正常无误,即可顺利投入使用。
