在 Linux 环境下,为 FTP 服务添加加密传输主要有两种成熟方案:FTPS 与 SFTP。虽然名称相似,但二者在实现原理和底层协议上截然不同。接下来将详细拆解各自的配置方法,帮助你快速搭建安全的文件传输环境。
方案一:FTPS(FTP Secure)
FTPS 本质上是在传统 FTP 协议之上包裹一层 SSL/TLS 加密层。要实现此方案,需先部署支持 SSL/TLS 的 FTP 服务端软件,例如 vsftpd 或 ProFTPD。下面以 vsftpd 为例,演示完整的配置流程。
1. 安装 vsftpd 服务
sudo apt-get update
sudo apt-get install vsftpd
2. 生成 SSL 证书与私钥
这个步骤并不复杂,执行一条命令即可完成:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
根据提示填写基本信息(例如国家代码、组织名称等),完成后证书和私钥会自动保存到指定路径。需要注意的是,自签名证书用于内网测试完全足够,生产环境建议使用权威 CA 签发的证书以增强信任度。
3. 编辑 vsftpd 主配置文件
打开配置文件进行编辑:
sudo nano /etc/vsftpd.conf
在文件末尾追加以下配置参数:
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/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
保存并退出编辑器。这些配置项的含义为:开启 SSL 加密,禁止匿名用户使用 SSL,强制本地用户的登录和数据传输均通过 SSL 进行,仅允许 TLSv1 协议,同时禁用不安全的 SSLv2 和 SSLv3,并指定之前生成的证书文件路径。
4. 重启 vsftpd 服务
sudo systemctl restart vsftpd
至此,FTP 服务器已成功支持 FTPS。客户端方面,使用 FileZilla 等支持 FTPS 的软件连接时,应选择“使用显式 FTP over TLS”或“要求隐式 FTP over TLS”选项即可正常传输。
方案二:SFTP(SSH File Transfer Protocol)
严格来说 SFTP 并非传统 FTP,而是 SSH 协议内嵌的文件传输功能。它无需额外安装独立的 FTP 服务器,直接利用 OpenSSH 就能实现,安全性和配置便利性都非常突出。
1. 安装 OpenSSH 服务端
sudo apt-get update
sudo apt-get install openssh-server
2. 修改 SSH 配置文件
sudo nano /etc/ssh/sshd_config
找到如下配置行,将前面的 # 删除(即取消注释):
Subsystem sftp /usr/lib/openssh/sftp-server
保存退出。实际上多数 Linux 发行版默认已包含该行且未被注释,只需确认其存在且处于激活状态即可。
3. 重启 SSH 服务
sudo systemctl restart ssh
配置完成。客户端可以使用支持 SFTP 的工具(如 FileZilla、WinSCP)连接服务器,协议选择 SFTP,端口默认 22,用户凭据即系统账户的用户名和密码。
两种方案各有适用场景:FTPS 更适配需要兼容传统 FTP 客户端的业务需求;SFTP 则与 SSH 体系深度融合,管理更为统一,也是众多运维人员的首选方案。根据实际使用场景选择其一即可,无需同时部署两套。
