温馨提示×

如何排查 centos sftp 故障

小樊
44
2026-09-02 22:44:24
栏目: 智能运维

在 CentOS 上排查 SFTP 故障,可以按“由外到内、由网络到配置”的思路逐步定位。下面是一套实用排查流程。


一、确认基础信息

先明确:

  • SFTP 服务方式:
    • 通常是 OpenSSH 的 sftp-server(最常用)
    • 也可能是 vsftpd + sftp
  • 客户端报错内容(非常重要)
  • 使用的账号(系统用户 / 虚拟用户)
  • 端口(默认 22)

二、检查 SSH / SFTP 服务状态

1. 查看 sshd 是否运行

systemctl status sshd

若未运行:

systemctl start sshd
systemctl enable sshd

2. 查看端口监听

ss -lntp | grep :22
# 或
netstat -lntp | grep sshd

三、网络与防火墙排查

1. 本地是否能连

在服务器本机测试:

sftp localhost

ssh user@localhost

2. 防火墙

firewall-cmd --list-all

确保 22 端口允许:

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

3. SELinux(常见坑)

getenforce

如果是 Enforcing,可临时验证:

setenforce 0

若恢复正常,说明是 SELinux 问题。

查看相关日志:

tail -f /var/log/audit/audit.log

四、SSH / SFTP 配置检查

1. 主配置文件

vim /etc/ssh/sshd_config

重点检查:

Subsystem sftp internal-sftp
# 或
Subsystem sftp /usr/libexec/openssh/sftp-server

PasswordAuthentication yes
PubkeyAuthentication yes

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

修改后重启:

systemctl restart sshd

五、用户与权限问题(非常常见)

1. 用户是否存在

id sftpuser

2. Chroot 目录权限要求(重点)

若使用 ChrootDirectory

  • 属主必须是 root
  • 其他用户不能有写权限

例如:

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

六、查看日志定位问题

1. 安全日志

tail -f /var/log/secure

常见错误:

  • Permission denied
  • fatal: bad ownership or modes for chroot
  • Authentication failure

2. 客户端加 verbose

sftp -v user@host
# 或
ssh -vvv user@host

七、常见故障速查表

现象 可能原因
连不上 防火墙 / sshd 未启动
能 SSH 不能 SFTP sftp subsystem 配置错误
登录后立刻断开 Chroot 权限错误
认证失败 密码 / 公钥 / PAM
SELinux 报警 上下文不对

八、快速自检清单

  • [ ] sshd 正常运行
  • [ ] 22 端口可访问
  • [ ] /etc/ssh/sshd_config 正确
  • [ ] 用户权限 & Chroot 合规
  • [ ] SELinux 不拦截
  • [ ] /var/log/secure 无报错

如果你愿意,可以把:

  • 客户端报错信息
  • sshd_config 相关配置
  • /var/log/secure 报错

发出来,我可以帮你精准定位。

0