温馨提示×

centos sftp报错怎么处理

小樊
49
2026-09-21 06:30:42
栏目: 智能运维

在 CentOS 上使用 SFTP 报错 是很常见的问题,原因可能来自 SSH 服务配置、权限、防火墙、SELinux、用户设置 等。下面我按「常见报错场景 → 原因 → 解决办法」给你一个实用排查清单。


一、先确认基础环境

1. 检查 SSH 服务是否运行

systemctl status sshd

如果没启动:

systemctl start sshd
systemctl enable sshd

2. 确认端口是否通

默认 SFTP 走 SSH(22 端口):

telnet IP 22
# 或
ssh user@IP

二、常见 SFTP 报错及处理

❌ 报错 1:Connection closed / Connection reset by peer

可能原因

  • SSH 配置禁止 SFTP
  • 用户 shell 不对
  • PAM 限制

解决

  1. 检查 /etc/ssh/sshd_config
Subsystem sftp internal-sftp

或

Subsystem sftp /usr/libexec/openssh/sftp-server
  1. 用户 shell 必须是:
/usr/bin/bash

不能是 /sbin/nologin(除非用 chroot)

查看:

grep 用户名 /etc/passwd

修改:

usermod -s /bin/bash 用户名
  1. 重启 sshd:
systemctl restart sshd

❌ 报错 2:Permission denied (publickey,password)

可能原因

  • 密码错
  • 禁止密码登录
  • 用户被锁定

解决

  1. 确认允许密码登录:
grep PasswordAuthentication /etc/ssh/sshd_config

应为:

PasswordAuthentication yes
  1. 重启 sshd

  2. 检查用户是否被锁:

passwd -S 用户名

❌ 报错 3:chroot 后 SFTP 登录失败

典型配置

Match User sftpuser
    ChrootDirectory /data/sftp
    ForceCommand internal-sftp

必须满足

chown root:root /data/sftp
chmod 755 /data/sftp

用户目录:

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

否则会:

  • 登录后立即断开
  • 日志显示 fatal: bad ownership

❌ 报错 4:SELinux 导致失败(CentOS 常见)

查看:

getenforce

临时关闭测试:

setenforce 0

如果好了,说明是 SELinux 问题:

setsebool -P ssh_chroot_rw_homedirs on
restorecon -Rv /data/sftp

❌ 报错 5:防火墙拦截

firewall-cmd --list-all

确保 22 端口开放:

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

三、看日志是最快的定位方式

tail -f /var/log/secure

常见关键字:

  • Accepted password
  • fatal
  • permission denied
  • chroot

四、最简单的 SFTP 用户创建示例(推荐)

useradd -m sftpuser
passwd sftpuser

usermod -s /bin/bash sftpuser

systemctl restart sshd

如果你能把具体报错信息贴出来(客户端报错 + /var/log/secure 日志),我可以直接帮你精确定位 ✅

0 踩