温馨提示×

如何给Ubuntu添加SFTP用户

小樊
44
2026-09-29 10:32:38
栏目: 智能运维

在 Ubuntu 上添加 SFTP 用户(通常是为了让该用户只能通过 SFTP 访问指定目录,而不能 SSH 登录),一般按以下步骤操作。


一、创建 SFTP 用户

sudo adduser sftpuser

按提示设置密码(其他信息可留空)。


二、创建 SFTP 专用目录

推荐结构( safer 方式):

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

sudo chown sftpuser:sftpuser /sftp/sftpuser/upload

说明:

  • /sftp/sftpuser 必须属于 root
  • 用户实际可写目录是 upload

三、修改 SSH 配置(关键)

编辑 SSH 配置:

sudo nano /etc/ssh/sshd_config

在文件末尾添加:

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

保存后测试配置:

sudo sshd -t

如果没有报错,重启 SSH:

sudo systemctl restart ssh

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

如果未使用 ForceCommand internal-sftp,可手动设置:

sudo usermod -s /usr/sbin/nologin sftpuser

五、测试 SFTP 登录

在另一台机器或本机:

sftp sftpuser@服务器IP

登录后只能看到:

/sftp/sftpuser/upload

六、常见问题

1. 登录失败:broken pipe

通常是:

  • ChrootDirectory 不是 root 拥有
  • 权限不是 755

2. 无法上传文件

确保上传目录属于该用户:

chown sftpuser:sftpuser /sftp/sftpuser/upload

如果你需要:

  • 多个 SFTP 用户
  • 使用密钥登录
  • Docker / 云服务器场景

可以告诉我,我可以给你更具体的方案。

0 踩