Ubuntu FTP怎样进行数据加密

作者:袖梨 2026-07-29

Ubuntu FTP数据加密常见方案与具体配置流程

在Ubuntu上实现FTP数据加密,主要有两种主流方案:FTPS(FTP over SSL/TLS)(FTP协议的安全扩展,兼容传统FTP客户端)和SFTP(SSH File Transfer Protocol)(基于SSH协议的加密传输,安全性更高且集成SSH功能)。以下是具体配置步骤:

一、FTPS(FTP over SSL/TLS)配置

需要兼容传统FTP客户端时,可采用FTPS,通过SSL/TLS协议对FTP传输进行加密。

1. 安装vsftpd

在Ubuntu的FTP服务器软件中,vsftpd较为常用,并具备对SSL/TLS扩展的支持。

sudo apt updatesudo apt install vsftpd

2. 生成SSL证书和私钥

自签名证书由OpenSSL生成;若用于生产环境,则建议改用CA颁发的证书:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

国家、组织名称等信息依照提示输入即可,相关内容不作严格验证。

3. 配置vsftpd启用FTPS

打开vsftpd主配置文件进行编辑:

sudo nano /etc/vsftpd.conf

取消注释、新增或修改以下关键配置:

# 启用SSL/TLSssl_enable=YES# 强制所有数据传输和登录使用SSL/TLSforce_local_data_ssl=YESforce_local_logins_ssl=YES# 禁用SSLv2/SSLv3(仅允许TLSv1.2及以上)ssl_tlsv1=YESssl_sslv2=NOssl_sslv3=NO# 指定证书和私钥路径rsa_cert_file=/etc/ssl/private/vsftpd.pemrsa_private_key_file=/etc/ssl/private/vsftpd.pem# 禁止匿名登录(可选但推荐)anonymous_enable=NO# 允许本地用户登录local_enable=YES# 允许用户上传文件write_enable=YES# 限制用户在其主目录(可选)chroot_local_user=YESallow_writeable_chroot=YES

4. 重启vsftpd服务

使配置变更生效:

sudo systemctl restart vsftpd

5. 配置防火墙

需要放行的端口包括FTPS数据端口(990,隐式模式)与FTP控制端口(21):

sudo ufw allow 21/tcpsudo ufw allow 990/tcpsudo ufw reload

6. 客户端连接

客户端需具备FTPS支持,例如FileZilla:

  • 协议选择“FTP - FTPS”;
  • “隐式FTP over TLS”与“显式FTP over TLS”(推荐)均可作为加密模式;
  • 填写服务器IP、用户名和密码后即可连接。

二、SFTP(SSH File Transfer Protocol)配置

基于SSH协议的SFTP不必额外安装FTP服务器,安全性更高,并集成了SSH功能。

1. 安装OpenSSH服务器

安装SSH服务器时,作为SSH组成部分的SFTP会默认一同安装:

sudo apt updatesudo apt install openssh-server

2. 配置SSH启用SFTP

打开SSH主配置文件进行编辑:

sudo nano /etc/ssh/sshd_config

确认以下配置已经存在,可取消注释或新增:

# 启用SFTP子系统Subsystem sftp /usr/lib/openssh/sftp-server# 或使用更安全的internal-sftp(推荐)# Subsystem sftp internal-sftp

以下内容为可选添加项,用于让用户仅能使用SFTP:

Match Group sftpusersChrootDirectory /home/%uForceCommand internal-sftpAllowTcpForwarding=noX11Forwarding=no

(需提前创建sftpusers组并将用户加入:sudo groupadd sftpuserssudo usermod -aG sftpusers username

3. 重启SSH服务

使配置变更生效:

sudo systemctl restart ssh

4. 客户端连接

客户端应具备SFTP支持,例如FileZilla:

  • “SFTP - SSH File Transfer Protocol”应设为所用协议;
  • 端口填写“22”(SSH默认端口);
  • 填写服务器IP、用户名和密码后即可连接。

注意事项

  • 证书选择:为避免浏览器/客户端出现“不受信任”提示,生产环境建议采用Let’s Encrypt等CA颁发的证书;
  • 防火墙设置:对应端口须予以放行,其中SFTP需22,FTPS需21+990;
  • 权限管理:SFTP用户的家目录权限需设置为755chmod 755 /home/username),避免无法上传文件;
  • 隐式 vs 显式FTPS:更灵活且推荐的显式FTPS(端口21)支持客户端先协商加密方式;隐式FTPS(端口990)则要求客户端从连接开始便建立加密连接。

相关文章

精彩推荐