在 CentOS 上搭建 加密的 FTP 服务器,通常推荐使用 FTPS(FTP over SSL/TLS),而不是明文 FTP。下面以 vsftpd + SSL/TLS 为例,说明如何配置加密。
sudo yum install -y vsftpd
启动并设置开机自启:
systemctl start vsftpd
systemctl enable vsftpd
openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout /etc/vsftpd/vsftpd.key \
-out /etc/vsftpd/vsftpd.crt
将证书放到:
/etc/vsftpd/vsftpd.crt/etc/vsftpd/vsftpd.key编辑配置文件:
vi /etc/vsftpd/vsftpd.conf
# 启用 SSL
ssl_enable=YES
# 证书和私钥
rsa_cert_file=/etc/vsftpd/vsftpd.crt
rsa_private_key_file=/etc/vsftpd/vsftpd.key
# 强制使用 TLS(推荐)
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
# 数据传输也加密
force_local_data_ssl=YES
force_local_logins_ssl=YES
# 允许匿名(可选,不建议)
anonymous_enable=NO
# 本地用户
local_enable=YES
write_enable=YES
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
防火墙开放端口:
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-port=30000-31000/tcp
firewall-cmd --reload
systemctl restart vsftpd
| 类型 | 说明 |
|---|---|
| FTPS(显式) | 端口 21,客户端选择 FTP over TLS |
| FTPS(隐式) | 端口 990(vsftpd 默认不支持隐式) |
常用客户端:
openssl s_client -connect localhost:21 -starttls ftp
看到证书信息即表示成功。
如果你需要:
可以继续告诉我你的使用场景。