在 Ubuntu 上配置 SFTP 权限,通常目标有两类:
下面按最常见的场景一步步说明。
sudo adduser sftpuser
(按提示设置密码,其他可留空)
sudo mkdir -p /sftp/sftpuser
sudo chown root:root /sftp
sudo chown sftpuser:sftpuser /sftp/sftpuser
⚠️ 注意:
编辑配置文件:
sudo nano /etc/ssh/sshd_config
在文件末尾添加:
Match User sftpuser
ChrootDirectory /sftp/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
如果你的 Ubuntu 较新(OpenSSH ≥ 7.5),更推荐用 用户组方式:
Match Group sftp
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
然后:
sudo groupadd sftp
sudo usermod -aG sftp sftpuser
Chroot 目录权限必须满足:
/sftp → root:root 755
/sftp/sftpuser → sftpuser:sftpuser 755
示例:
sudo chmod 755 /sftp
sudo chmod 755 /sftp/sftpuser
❌ 错误示例(会导致登录失败):
sudo systemctl restart ssh
sftp sftpuser@服务器IP
或用 FileZilla:
原因:
解决:
sudo chown root:root /sftp/sftpuser
在用户目录里再建子目录:
sudo mkdir /sftp/sftpuser/upload
sudo chown sftpuser:sftpuser /sftp/sftpuser/upload
确认用户 shell:
grep sftpuser /etc/passwd
如果不是 /bin/false 或 /usr/sbin/nologin:
sudo usermod -s /usr/sbin/nologin sftpuser
如果你愿意,可以告诉我:
我可以给你一份完全可直接用的配置。