温馨提示×

如何修复Ubuntu SFTP连接错误

小樊
60
2026-08-17 02:22:06
栏目: 智能运维

修复 Ubuntu 上的 SFTP 连接错误 通常需要从 服务端配置、权限、网络、SSH 本身 几个方面排查。下面按常见原因 → 对应修复方法来说明,你可以按顺序排查。


一、先确认 SSH 本身是否正常

SFTP 依赖 SSH(通常是 OpenSSH),先测试 SSH:

ssh 用户名@服务器IP
  • ✅ 能连上 → SSH 正常,问题在 SFTP
  • ❌ 连不上 → 先修 SSH(端口、防火墙、服务未启动)

二、常见错误及修复方法

1️⃣ SFTP 服务未启动(最常见)

检查 SSH 服务状态

sudo systemctl status ssh

如果未运行

sudo systemctl start ssh
sudo systemctl enable ssh

2️⃣ SSH 配置禁用了 SFTP

编辑配置文件

sudo nano /etc/ssh/sshd_config

确保有以下内容(或未被注释):

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

或用内部 SFTP(推荐):

Subsystem sftp internal-sftp

修改后重启 SSH

sudo systemctl restart ssh

3️⃣ 用户被限制为 SFTP 但配置错误(Chroot)

如果你配置了 SFTP-only 用户,常见问题:

正确示例(仅 SFTP,禁止 SSH)

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

⚠️ ChrootDirectory 权限要求(非常重要)

  • 必须是 root 拥有
  • 不能是普通用户可写
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser

然后在里面建一个可写目录:

sudo mkdir /home/sftpuser/upload
sudo chown sftpuser:sftpuser /home/sftpuser/upload

4️⃣ 用户没有登录权限

检查用户是否允许登录

sudo passwd -S 用户名

解锁用户

sudo passwd -u 用户名

确认 shell 不是 /bin/false/sbin/nologin(除非是 SFTP-only)

grep 用户名 /etc/passwd

5️⃣ 防火墙或端口问题

检查端口(默认 22)

sudo ss -tlnp | grep 22

防火墙放行

sudo ufw allow 22
sudo ufw reload

6️⃣ SELinux / AppArmor(较少见)

Ubuntu 默认用 AppArmor,可临时测试:

sudo systemctl stop apparmor

能连上就说明是安全策略问题(不建议长期关闭)。


7️⃣ 客户端报错示例与含义

错误信息 原因
Connection refused SSH 未启动 / 端口不通
Permission denied 密码错误 / 权限不足
broken pipe Chroot 权限错误
subsystem request failed sshd_config SFTP 配置错误

三、快速排查清单(推荐顺序)

1. systemctl status ssh
2. ssh 用户名@IP
3. 检查 /etc/ssh/sshd_config
4. 检查 ChrootDirectory 权限
5. 检查防火墙
6. 查看日志

查看日志(非常重要)

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

四、如果你愿意,我可以进一步帮你

你可以直接把 具体错误信息 发给我,例如:

  • FileZilla 报错
  • sftp 命令输出
  • /var/log/auth.log 相关日志

我可以 精准定位是哪一步出错,并给你最小修改方案 ✅

0