在 Ubuntu 上搭建 SFTP 服务器(基于 OpenSSH,安全且常用)通常步骤如下。下面以 Ubuntu 20.04 / 22.04 / 24.04 为例。
检查 SSH 是否安装:
sudo apt update
sudo apt install openssh-server
sudo adduser sftpuser
(按提示设置密码)
sudo mkdir -p /srv/sftp/sftpuser
sudo chown root:root /srv/sftp
sudo chown root:root /srv/sftp/sftpuser
sudo chmod 755 /srv/sftp/sftpuser
⚠️ 注意:SFTP 根目录必须属主为 root,否则登录会失败
sudo mkdir /srv/sftp/sftpuser/upload
sudo chown sftpuser:sftpuser /srv/sftp/sftpuser/upload
编辑 SSH 配置文件:
sudo nano /etc/ssh/sshd_config
在文件末尾添加:
Match User sftpuser
ChrootDirectory /srv/sftp/sftpuser
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
PasswordAuthentication yes
保存后退出,重启 SSH:
sudo systemctl restart ssh
从本地或其他机器:
sftp sftpuser@服务器IP
成功示例:
sftp> ls
upload
sftp> put test.txt upload/
重复上述步骤,为每个用户建目录
sudo groupadd sftpusers
sshd_config 中:
Match Group sftpusers
ChrootDirectory /srv/sftp/%u
ForceCommand internal-sftp
原因:Chroot 目录不是 root 拥有
解决:
sudo chown root:root /srv/sftp/sftpuser
确保上传目录属主是用户:
sudo chown sftpuser:sftpuser /srv/sftp/sftpuser/upload
上面配置已经禁止 SSH shell
如果你需要:
✅ 图形化管理
✅ Docker 版 SFTP
✅ 仅只读 SFTP
✅ 公网 + 域名访问
可以继续问我。