在 Ubuntu 上配置 SFTP 用户(仅 SFTP、禁止 SSH 登录,或允许 SSH 登录)常见做法如下。下面以 最常用、最安全的“限制用户只能 SFTP 且锁定目录” 为例。
sudo adduser sftpuser
按提示设置密码(可留空或设置)。
SFTP 根目录 属主必须是 root,且其他用户不可写。
sudo mkdir -p /sftp/sftpuser
sudo chown root:root /sftp/sftpuser
sudo chmod 755 /sftp/sftpuser
再建一个可写目录:
sudo mkdir /sftp/sftpuser/upload
sudo chown sftpuser:sftpuser /sftp/sftpuser/upload
编辑配置文件:
sudo nano /etc/ssh/sshd_config
# Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Match User sftpuser
ChrootDirectory /sftp/sftpuser
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
如果是多个用户,可写成:
Match Group sftpusers
sudo systemctl restart ssh
sftp sftpuser@服务器IP
✅ 成功
❌ 若报错 broken pipe,通常是目录权限问题(非 root 属主)
上面配置已经实现 ✅
sudo groupadd sftpusers
sudo usermod -aG sftpusers sftpuser
配置中改用:
Match Group sftpusers
sudo mkdir /sftp/sftpuser/.ssh
sudo cp id_rsa.pub /sftp/sftpuser/.ssh/authorized_keys
sudo chown -R sftpuser:sftpuser /sftp/sftpuser/.ssh
并在 sshd_config 中:
PasswordAuthentication no
如果你需要:
可以告诉我你的具体场景。