核心三步:确认ssh就绪、创建禁shell的sftp用户、配置chroot隔离;依赖openssh内置internal-sftp,linux/windows均原生支持,无需额外安装。

直接上手搭建 SFTP 服务器,核心就三步:确认 SSH 已就绪、创建受限用户、配置 chroot 隔离。它不是独立服务,而是 OpenSSH 内置功能,无需装额外软件包,Linux 和 Windows(Win10/11)都能原生支持。
确认 SSH 服务正常运行
SFTP 依赖系统自带的 OpenSSH,先确保它已启用且监听 22 端口:
- Linux(CentOS/Rocky/Ubuntu):
sudo systemctl status sshd,若未运行则执行sudo systemctl enable --now sshd - Windows(PowerShell 管理员模式):
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Server*'查状态;如未安装,运行Add-WindowsCapability -Online -Name OpenSSH.Server* - 防火墙放行 TCP 22 端口(云服务器还需在安全组中开通)
创建专用 SFTP 用户并禁用 Shell 登录
避免使用已有系统账户,专户专用更安全:
- 新建用户组统一管理:
sudo groupadd sftpusers - 添加用户,指定家目录、禁止终端登录:
sudo useradd -g sftpusers -d "/sftp/username" -s /sbin/nologin username - 设密码:
sudo passwd username(Linux)或New-LocalUser -Name "username" -Password (ConvertTo-SecureString "pwd" -AsPlainText -Force)(Windows)
配置 chroot 目录实现“牢笼”隔离
这是关键一步,让用户登录后只能看到自己目录,无法跳出查看系统其他文件:
宝塔面板11.3.0是一款针对Linux服务器设计的可视化管理工具,通过重构核心模块实现资源占用显著降低,尤其适合低配置服务器环境。它将复杂的命令行操作转化为直观的图形界面,帮助开发者快速完成网站部署、环境配置及日常运维工作,无需专业技术背景即可高效管理服务器。
- 创建严格权限结构(以
/sftp/username为例):sudo mkdir -p /sftp/username/uploadsudo chown root:sftpusers /sftp/usernamesudo chmod 755 /sftp/usernamesudo chown username:sftpusers /sftp/username/uploadsudo chmod 755 /sftp/username/upload - 编辑
/etc/ssh/sshd_config(Linux)或C:\ProgramData\ssh\sshd_config(Windows),末尾追加:
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
注意:%h 表示用户家目录,且该目录及其所有上级路径(如 /sftp、/)必须属主为 root、不可写(否则 SSH 拒绝启动 chroot)。
重启服务并测试连接
配置完成后务必重启 SSH 服务:
- Linux:
sudo systemctl restart sshd - Windows:
Restart-Service sshd - 本地测试:
sftp username@your_server_ip,输入密码即可登录;成功后执行ls应只看到upload目录,且无法执行cd ..
常见报错如 “Write failed: Broken pipe” 或 “Connection closed” 多因 chroot 目录权限不合规,重点检查 owner 和 chmod 是否满足 root:root + 755 要求。










