在 Linux 上部署 加密的 FTP 服务器,通常有两种主流方案:
下面分别说明,并给出推荐方案。
⚠️ SFTP 不是 FTP,而是基于 SSH 的文件传输协议
✅ 所有数据(包括账号密码)全程加密
✅ 不需要额外证书,配置最简单
sudo apt install openssh-server # Debian/Ubuntu
sudo yum install openssh-server # CentOS/RHEL
sudo systemctl enable sshd
sudo systemctl start sshd
sudo useradd -m sftpuser
sudo passwd sftpuser
编辑:
sudo vim /etc/ssh/sshd_config
添加:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
重启 SSH:
sudo systemctl restart sshd
✅ 客户端使用:
sftp sftpuser@服务器IP适合必须使用 FTP 协议的情况(如旧系统)
sudo apt install vsftpd
sudo openssl req -x509 -nodes -days 365 \
-keyout /etc/ssl/private/vsftpd.key \
-out /etc/ssl/certs/vsftpd.crt
编辑:
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)
| 项目 | SFTP | FTPS |
|---|---|---|
| 加密方式 | SSH | SSL/TLS |
| 端口 | 22 | 21 |
| 配置难度 | ✅ 简单 | ❌ 较复杂 |
| 穿透防火墙 | ✅ 好 | ❌ 差 |
| 安全性 | ✅ 高 | ✅ 高 |
| 推荐程度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
✅ 新系统 / 云服务器:首选 SFTP
sftp user@ip
如果你可以自由选择:
✅ 直接用 SFTP(SSH)
安全、简单、稳定、通用。
如果你愿意,我可以根据你的 Linux 发行版(Ubuntu / CentOS / Rocky 等) 给你一份 完整可复制的配置方案。