在 Ubuntu 上搭建 SFTP 服务器 | AI生成和翻译
在 Ubuntu 系统上搭建 SFTP(SSH 文件传输协议)服务器是一个简单的过程,能让你通过 SSH 加密在网络上安全传输文件。以下是完整的逐步指南,帮助你完成设置。
步骤 1:安装 OpenSSH 服务器
SFTP 依赖于 OpenSSH 服务器,你需要在 Ubuntu 系统上安装它。
- 打开终端并更新软件包列表:
sudo apt update - 安装 OpenSSH 服务器:
sudo apt install openssh-server - 检查 SSH 服务是否正在运行:
sudo systemctl status ssh- 如果未运行,请启动它:
sudo systemctl start ssh - 确保它在启动时自动运行:
sudo systemctl enable ssh
- 如果未运行,请启动它:
步骤 2:创建专用 SFTP 用户
为了更好的安全性,创建一个专门用于 SFTP 访问的用户。
- 添加新用户(例如
sftpuser):sudo adduser sftpuser- 按照提示设置密码并填写任何可选信息。
- (可选)禁止该用户通过 SSH 访问 shell:
sudo usermod -s /bin/false sftpuser
步骤 3:配置 SSH 以支持 SFTP
你可以允许所有用户通过 SFTP 访问其主目录,或将特定用户限制到特定文件夹。
选项 1:允许所有用户使用 SFTP
如果希望所有用户都能通过 SFTP 访问其主目录,安装 OpenSSH 后无需额外配置。直接跳至步骤 5。
选项 2:将用户限制到特定目录
要将用户(例如 sftpuser)限制在特定目录:
- 编辑 SSH 配置文件:
sudo nano /etc/ssh/sshd_config - 在文件末尾添加以下行:
Match User sftpuser ChrootDirectory /home/sftpuser ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no- 保存文件(按
Ctrl+O,然后按Enter)并退出(按Ctrl+X)。
- 保存文件(按
- 此配置:
- 将
sftpuser限制在/home/sftpuser目录。 - 强制仅使用 SFTP。
- 禁用 TCP 转发等额外功能。
- 将
步骤 4:设置目录权限
为了使限制设置(chroot)生效,调整权限:
- 将 chroot 目录的所有权设置为 root:
sudo chown root:root /home/sftpuser - 为用户创建一个可写的子目录(例如
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 服务器
从另一台设备连接以验证服务器是否正常工作。
- 查找你的 Ubuntu 机器的 IP 地址:
ip addr show- 查找类似
192.168.1.100的 IP。
- 查找类似
- 测试连接:
- 从终端(Linux/macOS):
sftp sftpuser@<ubuntu-ip-address>- 在提示时输入密码。
- 使用 FileZilla(任何操作系统):
- 主机:
sftp://<ubuntu-ip-address> - 用户名:
sftpuser - 密码:(你的密码)
- 端口:22
- 主机:
- 从终端(Linux/macOS):
- 尝试上传文件到
uploads文件夹或列出目录内容。
步骤 7:配置防火墙
如果你使用 Ubuntu 的防火墙(UFW),允许 SFTP 流量:
- 检查防火墙状态:
sudo ufw status - 允许 SSH/SFTP(端口 22):
sudo ufw allow 22/tcp sudo ufw reload
全部完成!
你的 SFTP 服务器现已准备就绪!用户可以使用 SFTP 客户端安全连接并传输文件到其指定目录。如果你限制了 sftpuser,他们将只能访问 /home/sftpuser/uploads(或你设置的任何位置)。享受安全的文件传输吧!