在 Ubuntu 上添加 SFTP 用户,通常是为了让用户只能通过 SFTP 访问某个目录,而不能 SSH 登录系统。下面是最常见、最安全的做法(基于 OpenSSH + Chroot)。
sudo adduser sftpuser
按提示设置密码(可留空或设强密码)。
如果只想做 SFTP,不希望有系统登录权限,可以后续禁止 SSH。
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 配置文件:
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
sudo usermod -s /usr/sbin/nologin sftpuser
sudo systemctl restart ssh
sftp sftpuser@服务器IP
登录后根目录是 /sftp/sftpuser,只能访问 upload。
broken pipesudo mkdir /sftp/sftpuser/.ssh
sudo cp id_rsa.pub /sftp/sftpuser/.ssh/authorized_keys
sudo chown -R sftpuser:sftpuser /sftp/sftpuser/.ssh
如果你告诉我:
我可以给你更精确的配置。