温馨提示×

centos sftp怎么排查故障

小樊
44
2026-10-05 22:39:26
栏目: 智能运维

在 CentOS 上排查 SFTP 故障,可以按“由外到内、由网络到服务”的思路逐步检查。下面给你一套实用排查清单。


一、先确认基础网络是否通

1. 能否连通服务器

ping 服务器IP
  • 不通:检查网络、防火墙、云厂商安全组
  • 通:继续往下

2. 端口是否开放(默认 22)

telnet 服务器IP 22
# 或
nc -vz 服务器IP 22

不通常见原因:

  • firewalld 未放行
  • 云服务器安全组未开放 22
  • SSH 服务没启动

二、检查 SSH / SFTP 服务状态

1. 查看 SSH 服务是否运行

systemctl status sshd

未运行:

systemctl start sshd
systemctl enable sshd

2. 测试 SSH 本身是否可用

ssh 用户名@服务器IP
  • SSH 能登,SFTP 不行 → 配置问题
  • SSH 也不能登 → 用户 / 权限 / 配置问题

三、确认 SFTP 子系统配置(非常关键)

编辑配置文件:

vim /etc/ssh/sshd_config

确认有以下内容(一般默认有):

Subsystem sftp internal-sftp

如果你用了 sftp-server,确保路径正确:

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

修改后重启:

systemctl restart sshd

四、用户与权限问题(最常见)

1. 用户是否被禁止登录

grep 用户名 /etc/passwd

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

2. Chroot 目录权限(如果用 chroot)

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

Chroot 目录必须满足:

  • 属主是 root
  • 权限 ≤ 755
  • 用户不能写根目录

示例:

chown root:root /data/sftp
chmod 755 /data/sftp
mkdir /data/sftp/upload
chown sftpuser:sftpuser /data/sftp/upload

五、查看日志(最重要的一步)

1. 实时看 SSH 日志

tail -f /var/log/secure

常见错误示例:

  • Permission denied
  • bad ownership or modes for chroot
  • fatal: bad directive
  • Connection closed

六、SELinux 影响(很多人忽略)

查看状态:

getenforce

如果是 Enforcing,可临时关闭测试:

setenforce 0

如解决,需配置 SELinux 策略或放行 SFTP。


七、防火墙检查

firewall-cmd --list-all

确保有:

services: ssh

或

ports: 22/tcp

八、客户端侧排查

  • FileZilla / WinSCP 报错信息
  • 是否用了正确协议(SFTP 不是 FTP)
  • 是否用了密钥但没加载

九、快速自检清单(总结)

✅ 网络通
✅ 22 端口通
✅ sshd 正常运行
✅ Subsystem sftp 正确
✅ 用户权限正确
✅ chroot 目录属主 root
✅ /var/log/secure 无报错


如果你愿意,可以把:

  • 报错信息
  • /etc/ssh/sshd_config 相关配置
  • /var/log/secure 日志片段

发出来,我可以帮你精准定位是哪一步出的问题。

0 踩