温馨提示×

centos sftp无法登录为何

小樊
47
2026-10-08 21:13:53
栏目: 智能运维

CentOS 上 SFTP 无法登录 的原因很多,下面按最常见 → 较少见的顺序帮你排查。你可以逐条对照。


一、SSH / SFTP 服务本身问题

1. SSH 服务未启动

SFTP 依赖 sshd

systemctl status sshd

若未运行:

systemctl start sshd
systemctl enable sshd

2. 防火墙 / SELinux 拦截

防火墙

firewall-cmd --list-all

确保 22 端口开放:

firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload

SELinux(非常常见)

getenforce

如果是 Enforcing,可临时测试:

setenforce 0

若这样能登录,说明是 SELinux 策略问题。


二、用户账号问题(最常见)

3. 用户被禁止登录

查看:

grep 用户名 /etc/passwd

shell 不能是 /sbin/nologin 或 /bin/false(除非用 chroot sftp)

示例正常:

user:x:1000:1000::/home/user:/bin/bash

若使用 SFTP 仅登录(无 shell):

usermod -s /sbin/nologin user

4. 密码错误 / 账号锁定

passwd -S 用户名

解锁:

passwd -u 用户名

三、SFTP 配置问题(sshd_config)

5. SFTP 子系统未启用

grep sftp /etc/ssh/sshd_config

应有:

Subsystem sftp internal-sftp

修改后重启:

systemctl restart sshd

6. Chroot 配置错误(非常常见)

如果你配置了:

Match User user
    ChrootDirectory /home/user
    ForceCommand internal-sftp

必须满足:

  • Chroot 目录 属主必须是 root
  • 权限 最多 755
chown root:root /home/user
chmod 755 /home/user

否则会直接断开连接。


四、权限与目录问题

7. 家目录权限不对

ls -ld /home/用户名

推荐:

chmod 700 /home/用户名
chown 用户名:用户名 /home/用户名

8. 磁盘空间满

df -h

五、认证方式问题

9. 禁用了密码登录

grep PasswordAuthentication /etc/ssh/sshd_config

若为 no,只能密钥登录。


10. 只允许特定用户/组

grep AllowUsers /etc/ssh/sshd_config
grep AllowGroups /etc/ssh/sshd_config

六、查看错误日志(关键)

服务端

tail -f /var/log/secure

客户端

sftp -v user@ip

快速自检清单 ✅

  • [ ] sshd 正常运行
  • [ ] 22 端口开放
  • [ ] SELinux 未拦截
  • [ ] 用户 shell 正确
  • [ ] sftp 子系统启用
  • [ ] chroot 目录权限正确
  • [ ] /var/log/secure 无报错

如果你愿意,可以把 报错信息 或 sshd_config 相关配置 贴出来,我可以直接帮你定位是哪一条原因。

0 踩