一、为什么选择 SFTP?
SFTP(SSH File Transfer Protocol) 是一种基于 SSH 的安全文件传输协议。 相比传统 FTP,它有如下优势:
- 只使用单一端口(通常 22),无需额外开放端口
- 全程加密传输,保证数据在网络中不被截获
- 可以直接复用 SSH 用户体系,无需额外账户管理
- 支持 Chroot 目录隔离、操作日志审计、密钥认证 等企业级安全机制
SFTP 已成为企业和个人服务器最常用、最安全的文件上传方式之一。
二、安装与启动 OpenSSH
SFTP 依赖 OpenSSH Server,大部分 Linux 系统已自带。 如果未安装,可以执行:
Ubuntu / Debian
sudo apt update
sudo apt install -y openssh-server
sudo systemctl enable ssh
sudo systemctl start ssh
sudo systemctl status ssh
CentOS / RHEL / Rocky / AlmaLinux
sudo yum install -y openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
sudo systemctl status sshd
注意:验证 SSH 服务是否启动正常,是确保 SFTP 可用的第一步。
三、创建 SFTP 用户和组
为了安全,建议不要让普通 SSH 用户直接使用 SFTP。 创建受限用户组和用户:
sudo groupadd sftpusers
sudo useradd -g sftpusers -s /usr/sbin/nologin sftpuser
sudo passwd sftpuser
说明:
-s /usr/sbin/nologin:禁止用户获得 shell 登录权限-g sftpusers:将用户加入 SFTP 专用组-m参数用于同时创建 home 目录,但如果你打算用/sftp作为 Chroot 根目录,其实可以省略
四、目录结构与权限(关键坑点)
OpenSSH 要求:
- Chroot 根目录必须由 root 拥有
- 根目录不可被非 root 用户写入
- 用户写入必须在根目录下的子目录


