Ubuntu SFTP如何使用SSL加密
导读:Ubuntu SFTP 使用 SSL 加密的正确做法 概念澄清 SFTP 是 SSH 文件传输协议,默认通过 SSH 的传输层建立加密通道,使用的是 SSH 主机密钥与协商算法,并非传统意义上的 SSL/TLS 证书。因此,SFTP 没有...
Ubuntu SFTP 使用 SSL 加密的正确做法
概念澄清
- SFTP 是 SSH 文件传输协议,默认通过 SSH 的传输层建立加密通道,使用的是 SSH 主机密钥与协商算法,并非传统意义上的 SSL/TLS 证书。因此,SFTP 没有“开启 SSL”的开关,只有“启用/加固 SSH 传输安全”的做法。
- 若你的目标是“用证书加密传输”,通常有两种选择:
- 继续使用 SFTP over SSH(推荐),并通过配置更强的加密套件、禁用不安全算法来加固安全。
- 改用 FTPS(FTP over SSL/TLS),这是标准 FTP 协议叠加 SSL/TLS,需要单独的证书与端口配置。
方案一 加固 SFTP over SSH(推荐)
- 安装 OpenSSH 服务器
- 执行:
sudo apt update & & sudo apt install openssh-server
- 执行:
- 配置 SFTP 子系统与用户隔离(示例)
- 编辑
/etc/ssh/sshd_config,在文件末尾加入:Subsystem sftp internal-sftp Match Group sftpusers ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no PasswordAuthentication yes PubkeyAuthentication yes - 创建 SFTP 用户并加入组:
sudo adduser sftpuser sudo usermod -aG sftpusers sftpuser - 为 chroot 安全,将用户家目录属主设为 root,并仅对用户可写子目录授权:
sudo chown root:root /home/sftpuser sudo chmod 755 /home/sftpuser sudo mkdir /home/sftpuser/upload sudo chown sftpuser:sftpuser /home/sftpuser/upload
- 编辑
- 加固加密算法与密钥交换(可选但强烈建议)
- 在
/etc/ssh/sshd_config的全局或 Match 段中加入:Protocol 2 HostKey /etc/ssh/ssh_host_ed25519_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_rsa_key Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr MACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com KexAlgorithms curve25519-sha256,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256
- 在
- 重启服务并测试
- 重启:
sudo systemctl restart ssh - 连接:
sftp sftpuser@your_server_ip - 验证算法:连接后执行
ssh -v sftpuser@your_server_ip或在客户端查看加密套件协商结果。
- 重启:
- 防火墙放行
- UFW:
sudo ufw allow ssh(默认端口 22/TCP)
- UFW:
方案二 使用 FTPS(FTP over SSL/TLS)
- 安装 vsftpd 与 OpenSSL
- 执行:
sudo apt update & & sudo apt install vsftpd openssl
- 执行:
- 生成自签名证书(或放置由可信 CA 签发的证书)
- 执行:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.crt
- 执行:
- 配置 vsftpd 启用 SSL/TLS
- 编辑
/etc/vsftpd.conf,确保包含:anonymous_enable=NO local_enable=YES write_enable=YES chroot_local_user=YES allow_writeable_chroot=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 - 防火墙(UFW):
sudo ufw allow 21/tcp;若使用被动模式,还需放行数据端口段(示例):sudo ufw allow 40000:50000/tcp
- 重启:
- 客户端连接
- 主机:服务器 IP
- 端口:21
- 协议:FTP over TLS(显式 FTPS)
- 登录凭据:你的系统用户
常见误区与验证
- 误区纠正
- 在
sshd_config中添加HostKey /etc/ssl/private/...或CertificateFile ...并不会让 SFTP 走 SSL/TLS;SSH 不使用 x509 证书进行传输加密。上述做法适用于 HTTPS/SSL 类服务,不适用于 SFTP。
- 在
- 连接与验证
- SFTP:使用
sftp user@host或sftp -oPort=22 user@host;如需查看协商细节,用ssh -v user@host。 - FTPS:使用支持 FTP over TLS 的客户端(如 FileZilla),选择“显式 FTP over TLS”,端口 21。
- 自签名证书在客户端会提示不受信任,生产环境建议使用 Let’s Encrypt 或企业 CA 签发证书,并在客户端正确导入信任链。
- SFTP:使用
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu SFTP如何使用SSL加密
本文地址: https://pptw.com/jishu/780845.html
