温馨提示×

如何给debian加sftp用户

小樊
35
2026-10-06 13:46:41
栏目: 智能运维

在 Debian 上添加 仅用于 SFTP 的用户(不能 SSH 登录,只能传文件)是常见需求。下面给你一套安全且常用的做法。


一、创建 SFTP 用户

sudo adduser sftpuser

按提示设置密码(可留空若仅用密钥)。


二、创建 SFTP 目录结构(重要)

SFTP 用户的根目录 必须归 root 所有,否则 chroot 会失败。

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

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

✅ 用户登录后看到的是 /upload


三、修改 SSH 配置(关键)

编辑:

sudo nano /etc/ssh/sshd_config

1️⃣ 注释掉这一行(如果存在)

# Subsystem sftp /usr/lib/openssh/sftp-server

2️⃣ 添加内部 SFTP

Subsystem sftp internal-sftp

3️⃣ 添加 SFTP 用户限制

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

四、重启 SSH

sudo systemctl restart ssh

五、测试 SFTP

sftp sftpuser@服务器IP

登录后应在 /upload 目录中。


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

如果还没限制:

sudo usermod -s /usr/sbin/nologin sftpuser

七、常见问题

❌ 登录失败:bad ownership or modes for chroot

原因:

  • Chroot 目录不是 root 所有
  • 权限不是 755

✅ 检查:

ls -ld /sftp/sftpuser

八、多用户方案(进阶)

可用用户组方式:

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

然后:

sudo groupadd sftpusers
sudo usermod -G sftpusers sftpuser

如果你需要:

  • 密钥登录
  • 只读 / 只写
  • Docker / ProFTPD 替代方案

告诉我你的使用场景,我可以直接给你配置。

0 踩