温馨提示×

如何修复linux sftp错误

小樊
61
2026-10-05 00:03:00
栏目: 智能运维

SFTP 在 Linux 上出错的原因很多,下面按常见场景 + 排查步骤 + 修复方法给你一个实用指南。你可以先看错误提示,再对照处理。


一、先确认错误类型

常见 SFTP 错误包括:

  • Connection refused
  • Permission denied
  • Connection closed by server
  • subsystem request failed
  • 卡在 Connected to ... 后无响应

二、基础排查(必做)

1. 检查 SSH 是否正常

ssh user@host
  • 如果 SSH 也连不上 → 问题在 SSH / 网络
  • 如果 SSH 能连,SFTP 不行 → 问题在 SFTP 配置

三、常见错误与修复

✅ 1. subsystem request failed

原因:sshd 没启用 sftp

修复: 编辑服务器:

sudo vim /etc/ssh/sshd_config

确保有:

Subsystem sftp internal-sftp

或

Subsystem sftp /usr/lib/openssh/sftp-server

重启 SSH:

sudo systemctl restart sshd

✅ 2. Permission denied

原因:

  • 用户目录权限不对
  • 家目录属主不是该用户
  • SELinux 限制

修复:

chown user:user /home/user
chmod 700 /home/user

如启用 SELinux:

restorecon -Rv /home/user

✅ 3. Connection closed by server

常见原因:

  • 用户被 chroot 但目录权限错误
  • shell 被设为 /sbin/nologin 但未用 internal-sftp

chroot 示例(正确写法):

Match User sftpuser
    ChrootDirectory /sftp
    ForceCommand internal-sftp
    AllowTcpForwarding no

注意:

chown root:root /sftp
chmod 755 /sftp

✅ 4. 防火墙 / 端口问题

SFTP 用 SSH 端口(默认 22)

检查:

sudo ufw status
sudo iptables -L

如果是云服务器,确认安全组放行 22。


✅ 5. 客户端命令错误

错误示例:

sftp ftp://host

正确:

sftp user@host

指定端口:

sftp -P 2222 user@host

四、开启调试(非常有用)

客户端调试

sftp -v user@host

服务端日志

sudo tail -f /var/log/auth.log
# 或
sudo journalctl -u sshd -f

五、快速自检清单 ✅

  • [ ] SSH 能登录
  • [ ] Subsystem sftp 已配置
  • [ ] 用户家目录权限正确
  • [ ] 防火墙放行 22
  • [ ] 使用 internal-sftp(推荐)

如果你能贴出具体报错信息或:

  • 客户端系统
  • 服务端 Linux 发行版
  • 是否用 chroot / 限制用户

我可以直接帮你给出精准修复命令。

0 踩