温馨提示×

centos sftp故障排查思路

小樊
50
2026-01-10 07:44:03
栏目: 智能运维

CentOS SFTP故障排查思路

一 快速定位流程

  • 网络连通性:先测到服务器的可达性与端口连通性,排除中间网络问题。
    命令示例:ping <服务器IP>nc -vz <IP> 22telnet <IP> 22
  • 服务状态:确认 OpenSSH 服务运行并开机自启。
    命令示例:systemctl status sshdsystemctl start sshdsystemctl enable sshd
  • 监听端口:确认 sshd 正在监听 TCP 22
    命令示例:ss -tnlp | grep :22
  • 日志线索:实时查看认证与连接日志。
    命令示例:tail -f /var/log/securejournalctl -u sshd -f
  • 防火墙放行:确保 firewalld/iptables 放行 22/TCP
    命令示例:firewall-cmd --list-allfirewall-cmd --permanent --add-service=ssh --permanent && firewall-cmd --reload
  • 客户端调试:用 -v/-vv/-vvv 获取详细握手与认证过程。
    命令示例:sftp -v user@hostssh -v user@host
    以上步骤能覆盖大多数“连不上/连上就断”的场景,并快速定位问题层面(网络/服务/配置/权限)。

二 常见症状与对应处理

症状 重点检查 快速修复
连接超时/端口不通 监听、云安全组/本机防火墙、网络路径 `ss -tnlp
认证失败/拒绝 用户名/口令/密钥、/etc/ssh/sshd_config 限制、/var/log/secure 核对凭据;检查 AllowUsers/AllowGroups/DenyUsers;必要时在 sshd_config 中为该用户做针对性配置并 systemctl restart sshd
仅部分用户无法连接 用户家目录/权限、用户是否被限制登录 检查家目录属主与权限(如 chmod 755 /home/username);确认未被 DenyUsers//etc/ssh/sshd_config 限制
登录后立即断开或报 “Couldn’t read packet: Connection reset by peer” ChrootDirectory 权限与属主、Subsystem sftp 配置 ChrootDirectory 及其上级目录属主必须为 root 且权限不超过 755;子目录如需写入,可单独授权给相应用户;确认 Subsystem sftp internal-sftp 或路径正确
目录列表很慢或闲置后断开 会话保活参数 /etc/ssh/sshd_config 设置:TCPKeepAlive yesClientAliveInterval 60ClientAliveCountMax 3,然后 systemctl restart sshd
SELinux 拦截 SELinux 状态与策略 getenforce(如为 Enforcing 可临时 setenforce 0 验证);定位后使用 semanage/restorecon 调整策略而非长期关闭
以上症状与处理覆盖了权限、配置、网络与保活等高频问题点。

三 配置与权限关键点

  • SFTP 子系统:推荐使用内置模块并显式声明。
    配置示例:Subsystem sftp internal-sftp
  • Chroot 场景:用于隔离用户目录时,务必保证 ChrootDirectory 及其上级目录属主为 root、权限不超过 755;如需写入,给目标子目录单独授予相应用户权限。
  • 认证方式:如需公钥登录,确保用户家目录下 .ssh/authorized_keys 权限为 600.ssh700,属主正确。
  • 变更生效:修改 /etc/ssh/sshd_config 后执行 systemctl restart sshd 并再次观察 /var/log/secure
    这些要点能有效避免因目录权限或子系统配置不当导致的登录/写入失败。

四 命令清单与最小复现

  • 服务端自检
    • 服务与端口:systemctl status sshdss -tnlp | grep :22
    • 日志跟踪:tail -f /var/log/securejournalctl -u sshd -f
    • 防火墙:firewall-cmd --list-allfirewall-cmd --permanent --add-service=ssh --permanent && firewall-cmd --reload
    • SELinux:getenforcesetenforce 0(仅测试)
  • 客户端定位
    • 连通与握手:nc -vz <IP> 22sftp -v user@hostssh -vv user@host
  • 最小复现步骤
    1. 在服务器本地执行 sftp user@127.0.0.1 验证本机可用性;
    2. 从同网段另一台主机连接,排除客户端问题;
    3. 跨网络/公网连接,核对云安全组与中间防火墙策略。
      以上命令与步骤有助于快速缩小问题范围并验证修复效果。

0