在 Ubuntu 上搭建 SFTP 服务器 | AI生成和翻译

Home 2025.03

在 Ubuntu 系统上搭建 SFTP(SSH 文件传输协议)服务器是一个简单的过程,能让你通过 SSH 加密在网络上安全传输文件。以下是完整的逐步指南,帮助你完成设置。


步骤 1:安装 OpenSSH 服务器

SFTP 依赖于 OpenSSH 服务器,你需要在 Ubuntu 系统上安装它。

  1. 打开终端并更新软件包列表:
    sudo apt update
    
  2. 安装 OpenSSH 服务器:
    sudo apt install openssh-server
    
  3. 检查 SSH 服务是否正在运行:
    sudo systemctl status ssh
    
    • 如果未运行,请启动它:
      sudo systemctl start ssh
      
    • 确保它在启动时自动运行:
      sudo systemctl enable ssh
      

步骤 2:创建专用 SFTP 用户

为了更好的安全性,创建一个专门用于 SFTP 访问的用户。

  1. 添加新用户(例如 sftpuser):
    sudo adduser sftpuser
    
    • 按照提示设置密码并填写任何可选信息。
  2. (可选)禁止该用户通过 SSH 访问 shell:
    sudo usermod -s /bin/false sftpuser
    

步骤 3:配置 SSH 以支持 SFTP

你可以允许所有用户通过 SFTP 访问其主目录,或将特定用户限制到特定文件夹。

选项 1:允许所有用户使用 SFTP

如果希望所有用户都能通过 SFTP 访问其主目录,安装 OpenSSH 后无需额外配置。直接跳至步骤 5。

选项 2:将用户限制到特定目录

要将用户(例如 sftpuser)限制在特定目录:

  1. 编辑 SSH 配置文件:
    sudo nano /etc/ssh/sshd_config
    
  2. 在文件末尾添加以下行:
    Match User sftpuser
        ChrootDirectory /home/sftpuser
        ForceCommand internal-sftp
        AllowTcpForwarding no
        X11Forwarding no
    
    • 保存文件(按 Ctrl+O,然后按 Enter)并退出(按 Ctrl+X)。
  3. 此配置:
    • sftpuser 限制在 /home/sftpuser 目录。
    • 强制仅使用 SFTP。
    • 禁用 TCP 转发等额外功能。

步骤 4:设置目录权限

为了使限制设置(chroot)生效,调整权限:

  1. 将 chroot 目录的所有权设置为 root:
    sudo chown root:root /home/sftpuser
    
  2. 为用户创建一个可写的子目录(例如 uploads):
    sudo mkdir /home/sftpuser/uploads
    sudo chown sftpuser:sftpuser /home/sftpuser/uploads
    
    • 用户现在可以将文件上传到 /home/sftpuser/uploads

步骤 5:重启 SSH 服务

通过重启 SSH 应用更改:

sudo systemctl restart ssh

步骤 6:测试你的 SFTP 服务器

从另一台设备连接以验证服务器是否正常工作。

  1. 查找你的 Ubuntu 机器的 IP 地址:
    ip addr show
    
    • 查找类似 192.168.1.100 的 IP。
  2. 测试连接:
    • 从终端(Linux/macOS):
      sftp sftpuser@<ubuntu-ip-address>
      
      • 在提示时输入密码。
    • 使用 FileZilla(任何操作系统):
      • 主机:sftp://<ubuntu-ip-address>
      • 用户名:sftpuser
      • 密码:(你的密码)
      • 端口:22
  3. 尝试上传文件到 uploads 文件夹或列出目录内容。

步骤 7:配置防火墙

如果你使用 Ubuntu 的防火墙(UFW),允许 SFTP 流量:

  1. 检查防火墙状态:
    sudo ufw status
    
  2. 允许 SSH/SFTP(端口 22):
    sudo ufw allow 22/tcp
    sudo ufw reload
    

全部完成!

你的 SFTP 服务器现已准备就绪!用户可以使用 SFTP 客户端安全连接并传输文件到其指定目录。如果你限制了 sftpuser,他们将只能访问 /home/sftpuser/uploads(或你设置的任何位置)。享受安全的文件传输吧!


Back Donate