温馨提示×

centos sftp无法连接怎么办

小樊
43
2026-09-06 03:03:32
栏目: 智能运维

在 CentOS 上 SFTP 无法连接 是比较常见的问题,通常和 SSH 服务、防火墙、SELinux、用户权限、配置错误 有关。下面按 排查顺序 给你一套完整思路。


一、先确认基础环境

1️⃣ SSH 服务是否运行

SFTP 依赖 sshd

systemctl status sshd

如果没运行:

systemctl start sshd
systemctl enable sshd

2️⃣ 服务器 IP 和端口是否通

在客户端测试:

ping 服务器IP
telnet 服务器IP 22

ssh 用户名@服务器IP

如果 22 端口不通,看防火墙。


二、防火墙问题(最常见)

CentOS 7/8

firewall-cmd --list-all

如果没开放 SSH:

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

CentOS 6

iptables -L -n
service iptables stop  # 临时测试

三、SELinux 问题(CentOS 特有)

查看:

getenforce

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

setenforce 0

如果关闭后能连,说明是 SELinux 限制:

setsebool -P ssh_chroot_rw_homedirs on
restorecon -Rv /home

四、SFTP 用户与权限问题

1️⃣ 用户是否存在 & 有密码

id 用户名
passwd 用户名

2️⃣ 用户家目录权限(非常重要)

SFTP 用户家目录不能过宽松:

chown root:root /home/用户名
chmod 755 /home/用户名

如果要可写目录:

mkdir /home/用户名/upload
chown 用户名:用户名 /home/用户名/upload

五、SSH / SFTP 配置检查

编辑配置

vi /etc/ssh/sshd_config

确认:

Subsystem sftp internal-sftp

如果有类似:

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

注意:

  • ChrootDirectory 属主必须是 root
  • 权限不能大于 755

修改后:

systemctl restart sshd

六、常见错误 & 对应原因

报错 原因
Connection refused sshd 没开 / 防火墙
Connection timeout 网络 / 防火墙
permission denied 密码错 / 用户被禁
broken pipe Chroot 权限错
received message too long sshd_config 写错

七、快速自查清单 ✅

  • [ ] sshd 正常运行
  • [ ] 22 端口开放
  • [ ] SELinux 未拦截
  • [ ] 用户密码正确
  • [ ] 家目录属主为 root
  • [ ] sshd_config 无语法错误

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

你可以告诉我:

  1. CentOS 版本(6 / 7 / 8 / Stream)
  2. 使用的是 系统用户 还是 SFTP 专用用户
  3. 客户端报错原文(非常重要)

我可以直接给你 对应配置文件示例

0