温馨提示×

centos sftp报错怎么解

小樊
38
2026-10-11 20:35:13
栏目: 智能运维

在 CentOS 上 SFTP 报错 的原因很多,我按「最常见场景」给你一个排查 + 解决清单,你可以对照看是哪一种。


一、先看报错信息(关键)

先把完整报错贴出来最准,例如:

  • connection closed
  • Permission denied
  • Received unexpected end-of-file
  • no such file or directory

下面先讲高频问题。


二、最常见的 SFTP 报错及解决方法

1️⃣ Permission denied(权限拒绝)

原因

  • 用户家目录权限不对
  • SFTP 用户没有登录 shell 或被限制

解决

# 家目录权限必须是 755 或更严格
chmod 755 /home/sftpuser
chown sftpuser:sftpuser /home/sftpuser

如果是 chroot SFTP:

chown root:root /home/sftpuser
chmod 755 /home/sftpuser

2️⃣ Connection closed by server / unexpected EOF

原因

  • sshd_config 中 SFTP 配置错误
  • chroot 目录权限不对

检查

vim /etc/ssh/sshd_config

示例(正确):

Subsystem sftp internal-sftp

Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp
    AllowTcpForwarding no

改完重启:

systemctl restart sshd

⚠️ ChrootDirectory 必须属主是 root


3️⃣ sftp 命令不存在

报错:

bash: sftp: command not found

解决:

yum install -y openssh-clients

4️⃣ SELinux 导致 SFTP 失败(CentOS 特有)

现象

  • 能登录但无法上传/下载
  • 日志里有 Permission denied

查看:

getenforce

临时关闭测试:

setenforce 0

永久解决(示例):

semanage fcontext -a -t public_content_rw_t "/home/sftpuser(/.*)?"
restorecon -Rv /home/sftpuser

5️⃣ 防火墙 / 端口问题

firewall-cmd --list-all

确保 22 端口开放:

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

6️⃣ 用户被禁止登录

grep sftpuser /etc/passwd

shell 不能是 /sbin/nologin 如果要用 shell
如果是纯 SFTP:

usermod -s /sbin/nologin sftpuser

三、快速自查命令(建议直接跑)

systemctl status sshd
journalctl -xe | grep sshd
ls -ld /home/sftpuser
getenforce

四、如果你愿意,我可以精准帮你

请你贴出:

  1. 完整报错信息
  2. 使用的命令(如 sftp user@ip)
  3. CentOS 版本(cat /etc/centos-release)
  4. 是否是 chroot SFTP

我可以直接帮你定位到具体哪一行配置错了。

0 踩