温馨提示×

ubuntu sftp用户怎么添加

小樊
34
2026-10-05 06:30:05
栏目: 智能运维

在 Ubuntu 上添加 SFTP 用户,通常是为了让用户只能通过 SFTP 访问某个目录,而不能 SSH 登录系统。下面是最常见、最安全的做法(基于 OpenSSH + Chroot)。


一、创建 SFTP 用户

sudo adduser sftpuser

按提示设置密码(可留空或设强密码)。

如果只想做 SFTP,不希望有系统登录权限,可以后续禁止 SSH。


二、创建 SFTP 根目录(Chroot 目录)

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

⚠️ Chroot 目录必须属于 root,且其他用户不能写


三、创建用户可写目录

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

用户登录后只能在 upload 目录写文件。


四、修改 SSH 配置

编辑 SSH 配置文件:

sudo nano /etc/ssh/sshd_config

在文件末尾添加:

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

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

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

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

sudo usermod -s /usr/sbin/nologin sftpuser

六、重启 SSH 服务

sudo systemctl restart ssh

七、测试 SFTP 登录

sftp sftpuser@服务器IP

登录后根目录是 /sftp/sftpuser,只能访问 upload。


九、常见问题

1. 登录报错 broken pipe

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

2. 无法上传文件

  • 上传目录不是该用户拥有

3. 想用密钥登录

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

如果你告诉我:

  • 是否允许 SSH
  • 单用户还是多用户
  • 是否用密钥

我可以给你更精确的配置。

0 踩