温馨提示×

CentOS SFTP如何连接失败

小樊
44
2026-08-30 01:21:53
栏目: 智能运维

CentOS 上 SFTP 连接失败 原因很多,一般可以按下面思路一步步排查。下面我按最常见 → 较少见给你梳理,并给出对应的解决办法。


一、先确认基本信息是否正确

在客户端执行:

sftp user@服务器IP

常见错误:

  • IP 错误
  • 用户名错误
  • 端口不是 22(如果改过)

✅ 如果改过端口:

sftp -P 2222 user@IP

二、检查 SSH / SFTP 服务是否运行

SFTP 依赖 sshd

1️⃣ 查看 sshd 状态

systemctl status sshd

如果没运行:

systemctl start sshd
systemctl enable sshd

三、防火墙是否放行 SFTP(最常见)

检查防火墙

systemctl status firewalld

放行 SSH(默认 22)

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

✅ 如果改过端口:

firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --reload

四、SELinux 导致 SFTP 失败(CentOS 特有)

查看 SELinux 状态

getenforce

如果是 Enforcing,可能限制 SFTP 目录。

临时关闭测试

setenforce 0

如果此时能连,说明是 SELinux 问题。

✅ 正确做法(不关闭 SELinux):

setsebool -P ssh_chroot_rw_homedirs on

五、SFTP 被限制(禁用了 SFTP)

查看 sshd 配置

vim /etc/ssh/sshd_config

确认:

Subsystem sftp internal-sftp

⚠️ 如果看到:

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

一般也没问题,但如果路径不存在会失败。

修改后重启:

systemctl restart sshd

六、用户被禁止 SSH / SFTP

1️⃣ 用户是否被锁定

passwd -S 用户名

2️⃣ 是否禁止该用户 SSH

vim /etc/ssh/sshd_config

检查是否有:

DenyUsers 用户名
DenyGroups 用户名

七、使用密钥登录失败

如果你是 密钥登录失败

检查权限(非常关键)

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

查看 sshd 配置

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

修改后重启 sshd。


八、查看服务器日志(最直接)

实时查看日志

tail -f /var/log/secure

常见错误示例:

  • Permission denied
  • Bad ownership or modes for directory
  • Connection closed by remote host

九、常见错误速查表

错误提示 原因
Connection refused sshd 没启动 / 防火墙
Connection timeout 防火墙 / IP 不对
Permission denied 密码 / 权限 / SELinux
broken pipe 网络 / 配置问题
Received message too long shell 输出导致

十、快速自检清单 ✅

systemctl status sshd
firewall-cmd --list-all
getenforce
tail -f /var/log/secure

如果你愿意,可以把 具体报错信息(客户端 + /var/log/secure)贴出来,我可以直接帮你定位是哪一步出问题。

0