首页主机资讯Ubuntu SFTP如何使用SSL加密

Ubuntu SFTP如何使用SSL加密

时间2026-01-16 03:35:04发布访客分类主机资讯浏览1200
导读:Ubuntu SFTP 使用 SSL 加密的正确做法 概念澄清 SFTP 是 SSH 文件传输协议,默认通过 SSH 的传输层建立加密通道,使用的是 SSH 主机密钥与协商算法,并非传统意义上的 SSL/TLS 证书。因此,SFTP 没有...

Ubuntu SFTP 使用 SSL 加密的正确做法

概念澄清

  • SFTPSSH 文件传输协议,默认通过 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

方案二 使用 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 ... 并不会让 SFTPSSL/TLS;SSH 不使用 x509 证书进行传输加密。上述做法适用于 HTTPS/SSL 类服务,不适用于 SFTP。
  • 连接与验证
    • SFTP:使用 sftp user@hostsftp -oPort=22 user@host;如需查看协商细节,用 ssh -v user@host
    • FTPS:使用支持 FTP over TLS 的客户端(如 FileZilla),选择“显式 FTP over TLS”,端口 21
    • 自签名证书在客户端会提示不受信任,生产环境建议使用 Let’s Encrypt 或企业 CA 签发证书,并在客户端正确导入信任链。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu SFTP如何使用SSL加密
本文地址: https://pptw.com/jishu/780845.html
Linux Kafka配置中如何管理日志 Debian上K8s部署的网络如何配置

游客 回复需填写必要信息