如何通过Ubuntu SFTP进行加密传输

作者:袖梨 2026-08-03

Ubuntu SFTP加密传输实操指南

一 核心原理与准备

  1. SFTP 基于 SSH 协议,在传输层自动完成对数据与控制通道的加密,无需额外配置“SSL/TLS”开关;只要使用 SSH 端口 22 并建立 SFTP 会话,传输即为加密。为提升安全性,建议使用密钥认证并禁用密码登录。
  2. 准备:一台 Ubuntu 服务器(作为 SFTP 服务端),一台客户端(Linux/macOS 自带 sftp,Windows 可用 FileZilla/Winscp),以及具备 sudo 权限的账户。

二 快速搭建 SFTP 服务端

  1. 安装并启动服务
    sudo apt updatesudo apt install openssh-serversudo systemctl start sshsudo systemctl enable ssh
  2. 基础安全加固(/etc/ssh/sshd_config)
    PubkeyAuthentication yesPasswordAuthentication noPermitRootLogin no
    修改后重启服务:sudo systemctl restart ssh
  3. 防火墙放行
    sudo ufw allow sshsudo ufw enable
  4. 客户端连接测试
    sftp sftpuser@your_server_ip
    以上完成后,所有通过 SFTP 的文件传输均已加密。

三 常见场景与配置要点

  1. 仅 SFTP 访问且限制到用户主目录(推荐)
    sudo groupadd sftpuserssudo adduser sftpusersudo usermod -aG sftpusers sftpusersudo nano /etc/ssh/sshd_config
    在文件末尾加入:
    Match Group sftpusersChrootDirectory %hForceCommand internal-sftpAllowTcpForwarding noX11Forwarding no
    目录权限要求(否则 chroot 会失败):
    sudo chown root:root /home/sftpusersudo chmod 755 /home/sftpusersudo systemctl restart ssh
  2. 使用密钥登录(更安全)
    1. 客户端生成密钥:ssh-keygen -t rsa -b 4096 -C "[email protected]"
    2. 将公钥(默认 ~/.ssh/id_rsa.pub)追加到服务端的 ~/.ssh/authorized_keys
    3. 设置权限:
      chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys
    4. /etc/ssh/sshd_config 中确保 PubkeyAuthentication yesPasswordAuthentication no,重启 ssh 生效。

四 验证加密与日志排查

  1. 查看实时认证与 SFTP 日志
    sudo tail -f /var/log/auth.log
  2. 连接过程验证(客户端)
    sftp -v sftpuser@your_server_ip
    看到 SSH 握手与 SFTP 子系统启动即表明为加密通道。
  3. 如需进一步确认协议与端口,可在客户端使用:
    openssl s_client -connect your_server_ip:22 -starttls sftp
    出现握手信息表示基于 SSH 的加密通道可用(用于诊断,不建议作为常规连接方式)。

五 常见误区与建议

  1. SFTP 不需要也不使用 SSL/TLS 证书;证书用于 HTTPS/FTPS。在 SFTP 场景下,正确做法是启用 SSH 主机密钥与用户密钥认证。
  2. 若你实际需要的是 FTPS(FTP over SSL/TLS),应使用 vsftpd 并配置 ssl_enable=YESrsa_cert_filersa_private_key_file 等参数,这与 SFTP 是两套不同协议。

相关文章

精彩推荐