温馨提示×

ubuntu sftp怎样配置用户

小樊
40
2026-09-02 06:52:52
栏目: 智能运维

在 Ubuntu 上配置 SFTP 用户(通常是为了限制用户只能通过 SFTP 访问,而不能 SSH 登录),可以按照下面的步骤来操作。


一、创建 SFTP 用户

sudo adduser sftpuser

按提示设置密码和用户信息(可一路回车)。


二、创建 SFTP 专用目录

推荐目录结构(安全做法):

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

⚠️ 注意:
SFTP 根目录(/sftp/sftpuser)必须属于 root,否则 Chroot 会失败。

创建用户可写目录:

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

三、修改 SSH 配置(关键)

编辑 SSH 配置文件:

sudo nano /etc/ssh/sshd_config

1️⃣ 注释或确认这一行存在

Subsystem sftp internal-sftp

2️⃣ 在文件末尾添加:

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

如果你想 限制一组用户,可以用:

Match Group sftpusers
    ChrootDirectory /sftp/%u
    ForceCommand internal-sftp

然后:

sudo groupadd sftpusers
sudo usermod -aG sftpusers sftpuser

四、重启 SSH 服务

sudo systemctl restart ssh

五、测试 SFTP 登录

在本地或另一台机器:

sftp sftpuser@服务器IP

✅ 成功登录
❌ 如果报错 broken pipe,通常是目录权限问题(不是 root 拥有)


六、禁止 SFTP 用户 SSH 登录(可选)

sudo usermod -s /usr/sbin/nologin sftpuser

七、常见问题排查

1️⃣ fatal: bad ownership or modes for chroot

  • /sftp/sftpuser 必须是 root:root
  • 权限不能高于 755

2️⃣ 无法上传文件

  • 只能在 upload 这类子目录中上传
  • Chroot 根目录不可写

八、总结(最简流程)

adduser sftpuser
mkdir -p /sftp/sftpuser/upload
chown root:root /sftp/sftpuser
chown sftpuser:sftpuser /sftp/sftpuser/upload
Match User sftpuser
    ChrootDirectory /sftp/sftpuser
    ForceCommand internal-sftp
systemctl restart ssh

如果你需要:

  • 多用户 SFTP
  • 每个用户独立目录
  • 配合 vsftpd / 密钥登录
  • Docker / 云服务器场景

可以告诉我,我可以直接给你一份完整配置。

0