CentOS 上 SFTP 登录失败 的原因很多,常见原因可以按下面几类排查。你可以对照看是哪一类:
systemctl status sshd
如果没运行:
systemctl start sshd
systemctl enable sshd
firewall-cmd --list-all
确保 22 端口开放:
firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload
getenforce
如果是 Enforcing,可临时测试:
setenforce 0
若登录成功,说明是 SELinux 策略问题。
检查:
grep 用户名 /etc/passwd
shell 应为:
/bin/bash
如果是 /sbin/nologin 或 /bin/false,SFTP 可能失败(除非使用 internal-sftp + chroot)。
passwd -S 用户名
锁定状态会显示 L。
解锁:
passwd -u 用户名
如果你配置了:
ChrootDirectory /home/xxx
那么:
/home/xxx 必须 属主为 root755错误示例:
chown root:root /home/xxx
chmod 755 /home/xxx
/etc/ssh/sshd_config 配置错误常见问题:
AllowUsers user1 user2
Subsystem sftp internal-sftp
修改后必须重启:
systemctl restart sshd
服务端:
journalctl -u sshd -f
或:
tail -f /var/log/secure
客户端加 verbose:
sftp -v user@ip
| 现象 | 可能原因 |
|---|---|
| connection refused | sshd 未启动 / 防火墙 |
| permission denied | 密码错 / 用户被禁 |
| broken pipe | chroot 权限错 |
| accepted password 但立刻断开 | shell 或 sftp 子系统问题 |
如果你愿意,可以把 具体报错信息 或 /var/log/secure 的相关内容贴出来,我可以直接帮你定位是哪一条。