温馨提示×

Ubuntu如何限制SFTP访问目录

小樊
44
2026-08-01 12:57:49
栏目: 智能运维

在 Ubuntu 上限制 SFTP 只能访问指定目录(不能 SSH 登录、不能访问其他目录),最常用、最安全的方法是使用 OpenSSH 自带的 ChrootDirectory 机制。下面给你一套标准、可落地的做法。


一、实现目标

  • 用户 只能使用 SFTP
  • 不能 SSH 登录
  • 只能访问指定目录(如 /home/sftp/用户名
  • 不能访问系统其他目录

二、准备工作

1️⃣ 确认 OpenSSH 版本

ssh -V

一般 Ubuntu 18.04+ 都支持。


三、创建 SFTP 专用用户

1️⃣ 创建用户(不允许 SSH)

sudo useradd -m -s /usr/sbin/nologin sftpuser
  • -m:创建家目录
  • /usr/sbin/nologin:禁止 SSH 登录

2️⃣ 设置密码

sudo passwd sftpuser

四、创建 SFTP 根目录(非常关键)

⚠️ Chroot 目录必须归 root 所有,且不能被其他用户写入

sudo mkdir -p /sftp/sftpuser
sudo chown root:root /sftp/sftpuser
sudo chmod 755 /sftp/sftpuser

创建实际可写目录

sudo mkdir /sftp/sftpuser/upload
sudo chown sftpuser:sftpuser /sftp/sftpuser/upload

✅ 用户登录后:

  • /sftp/sftpuser根目录 /
  • 实际可写的是 upload

五、配置 OpenSSH

编辑 SSH 配置:

sudo nano /etc/ssh/sshd_config

1️⃣ 确认或添加以下内容

Subsystem sftp internal-sftp

❗ 不要用 Subsystem sftp /usr/lib/openssh/sftp-server


2️⃣ 添加 SFTP 限制规则(放在文件末尾)

Match User sftpuser
    ChrootDirectory /sftp/sftpuser
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

如果你有多个用户,可以用组方式:

Match Group sftpusers
    ChrootDirectory /sftp/%u
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

六、重启 SSH 服务

sudo systemctl restart sshd

七、测试 SFTP

sftp sftpuser@服务器IP

✅ 成功表现:

  • 登录成功
  • pwd 显示 /
  • 只能看到 upload
  • 不能访问 /etc/home

八、常见问题排查

❌ 登录失败(常见)

bad ownership or modes for chroot directory

✅ 原因:

  • Chroot 目录 不是 root:root
  • 权限不是 755

✅ 修复:

sudo chown root:root /sftp/sftpuser
sudo chmod 755 /sftp/sftpuser

❌ 可以登录但无法上传

Permission denied

✅ 原因:

  • 没在 Chroot 内创建可写目录

✅ 解决:

mkdir upload
chown sftpuser:sftpuser upload

九、安全建议(强烈推荐)

✅ 多用户使用 组管理

sudo groupadd sftpusers
sudo usermod -aG sftpusers sftpuser

✅ 禁止 SFTP 用户查看系统用户

sudo chmod 750 /home/*

✅ 使用密钥登录(可选)

sudo mkdir /sftp/sftpuser/.ssh
sudo cp id_rsa.pub /sftp/sftpuser/.ssh/authorized_keys
sudo chown -R root:root /sftp/sftpuser/.ssh

十、总结(核心要点)

项目 要求
Chroot 目录 root 所有
可写目录 用户所有
SSH 登录 nologin
SFTP internal-sftp

如果你需要:

  • 多用户自动目录
  • 只允许上传不允许删除
  • 配合 Nginx / FTP 使用
  • Docker / 云服务器场景

可以直接告诉我你的使用场景,我可以给你定制方案。

0