Debian 11下SFTP用户sftpuser连接失败问题求助
Debian 11下SFTP用户sftpuser连接失败问题求助
嗨,别着急!从你描述的情况来看,大概率是SFTP相关的目录权限或者用户配置出了问题——毕竟SFTP对目录权限的要求特别严格,咱们一步步来排查修复:
第一步:检查sftpuser的用户属性
SFTP用户通常是被限制不能登录系统的,先确认这个设置没被改动:
执行命令:
cat /etc/passwd | grep sftpuser
正常输出应该类似:
sftpuser:x:1001:1001::/home/sftpuser:/usr/sbin/nologin
重点看最后一段,如果是/bin/bash这类可登录的shell,就用下面的命令修改:
sudo usermod -s /usr/sbin/nologin sftpuser
第二步:核对SSH配置文件里的SFTP规则
打开SSH的配置文件检查:
sudo nano /etc/ssh/sshd_config
找到你之前配置的针对sftpuser的区块,确保内容类似这样(重点看标注的部分):
Match User sftpuser ForceCommand internal-sftp # 强制使用SFTP,禁止shell登录 PasswordAuthentication yes # 开启密码认证(如果你用密码登录的话) ChrootDirectory /home/sftpuser # 限制用户只能访问这个目录 PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no
修改完记得重启SSH服务生效:
sudo systemctl restart sshd
第三步:检查Chroot目录的权限(最容易踩坑的地方!)
SFTP的Chroot目录(也就是/home/sftpuser)必须满足两个硬性要求:
- 目录所有者必须是
root用户 - 权限不能超过
755(所有者可读可写可执行,组和其他只可读可执行,不能给组/其他写权限)
执行命令检查当前权限:
ls -ld /home/sftpuser
正常输出应该是:
drwxr-xr-x 2 root root 4096 Aug 10 12:34 /home/sftpuser
如果不符合,用下面的命令修正:
# 修改所有者为root sudo chown root:root /home/sftpuser # 修改权限为755 sudo chmod 755 /home/sftpuser
第四步:给用户配置可读写的子目录
如果sftpuser需要上传文件,你需要在Chroot目录下创建一个属于它的子目录(因为Chroot目录本身必须是root所有,用户无法直接写入):
比如创建一个uploads目录:
sudo mkdir /home/sftpuser/uploads # 修改目录所有者为sftpuser sudo chown sftpuser:sftpuser /home/sftpuser/uploads # 设置合理权限 sudo chmod 755 /home/sftpuser/uploads
第五步:查看认证日志定位具体错误
如果上面的步骤都做完还是不行,就查看系统的认证日志找线索:
sudo tail -f /var/log/auth.log
然后尝试用sftpuser连接,日志里会输出具体的失败原因(比如Chroot目录权限不符合要求),根据提示再针对性修复就好啦!
备注:内容来源于stack exchange,提问作者matrixebiz
相关产品推荐
相关产品推荐

