温馨提示×

centos sftp报错怎么查

小樊
52
2026-10-14 18:53:25
栏目: 智能运维

在 CentOS 上排查 SFTP 报错,可以按下面几个层次一步步来查。


一、先确认报错现象

不同报错位置排查方向不同:

  • 连接阶段就失败(连接超时、拒绝)
  • 登录阶段失败(密码/密钥错误、Permission denied)
  • 登录成功但无法上传/下载(权限、目录、SELinux)

二、服务端基础检查(SSH / SFTP)

1. 确认 SSH 服务状态

systemctl status sshd

如果没运行:

systemctl start sshd
systemctl enable sshd

2. 确认 SFTP 功能是否开启

SFTP 依赖 sshd 的 Subsystem

编辑配置:

vim /etc/ssh/sshd_config

确认有这一行(通常默认就有):

Subsystem sftp internal-sftp

或

Subsystem sftp /usr/libexec/openssh/sftp-server

修改后重启:

systemctl restart sshd

三、查看服务端日志(最关键)

1. 实时查看 sshd 日志

journalctl -u sshd -f

或

tail -f /var/log/secure

常见错误示例:

  • Failed password
  • Permission denied (publickey,password)
  • bad ownership or modes for chroot
  • fatal: bad ownership or modes for directory

四、常见 SFTP 报错及处理方式

1. Connection refused / Timeout

可能原因:

  • sshd 未启动
  • 防火墙阻挡

检查端口(默认 22):

ss -lntp | grep sshd

防火墙:

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

2. Permission denied

  • 用户名/密码错误
  • 用户被禁止登录

检查用户是否允许 SSH:

grep 用户名 /etc/passwd

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


3. chroot 目录报错(很常见)

如果你配置了:

Match User sftpuser
ChrootDirectory /data/sftp

必须满足:

  • Chroot 目录 属主是 root
  • 权限 最大 755
chown root:root /data/sftp
chmod 755 /data/sftp

用户实际可写目录要建在子目录:

mkdir /data/sftp/upload
chown sftpuser:sftpuser /data/sftp/upload

4. SELinux 导致无法写入

查看是否开启:

getenforce

临时关闭测试:

setenforce 0

如需永久解决:

setsebool -P ssh_chroot_rw_homedirs on

五、客户端排错命令

1. 测试连接

sftp user@ip

2. 看详细错误

sftp -v user@ip

3. 测试 SSH 是否通

ssh user@ip

六、快速自查清单 ✅

  • [ ] sshd 正常运行
  • [ ] 22 端口可访问
  • [ ] /etc/ssh/sshd_config 中 sftp 正常
  • [ ] 用户目录权限正确
  • [ ] chroot 目录属主为 root
  • [ ] SELinux 未拦截
  • [ ] /var/log/secure 有清晰报错

如果你愿意,可以把 具体的报错信息(客户端 + /var/log/secure)贴出来,我可以直接帮你定位是哪一类问题。

0 踩