温馨提示×

Ubuntu SFTP为何登录失败

小樊
39
2026-08-28 02:24:09
栏目: 智能运维

Ubuntu 上 SFTP 登录失败 原因很多,常见可归纳为 配置、权限、账号状态、SSH 服务、网络/防火墙 几类。下面按最常见 → 不那么常见的顺序帮你系统排查,并给出对应的解决方法


一、先明确:登录失败的几种表现

不同报错,对应原因不一样(请在客户端或 /var/log/auth.log 中查看):

现象 可能原因
连接超时 SSH 服务未启动、端口不对、防火墙
拒绝连接 SSH 服务未监听
密码错误 密码不对、账号被锁
直接断开 SFTP 被禁用、用户 shell 不对
权限拒绝 目录权限问题

二、最常见原因与解决方法

1️⃣ SSH / SFTP 服务未运行

SFTP 依赖 sshd

systemctl status ssh

✅ 正常:

Active: active (running)

❌ 未运行:

sudo systemctl start ssh
sudo systemctl enable ssh

2️⃣ 端口或防火墙问题

Ubuntu 默认 SSH 端口是 22

查看:

ss -lntp | grep ssh

防火墙:

sudo ufw status

如果启用:

sudo ufw allow 22/tcp

3️⃣ 账号被禁用 / 密码错误 / 锁定

检查账号状态:

passwd -S 用户名
  • L → 锁定
  • P → 正常

解锁:

sudo passwd -u 用户名

重设密码:

sudo passwd 用户名

⚠️ 注意:Ubuntu 默认禁用 root 远程登录,不要用 root 直接 SFTP。


4️⃣ 用户被禁止使用 SFTP(sshd_config)

查看:

sudo nano /etc/ssh/sshd_config

常见配置问题:

❌ 只允许 SSH,未允许 SFTP

确保存在:

Subsystem sftp internal-sftp

❌ 用户被限制登录

如:

DenyUsers 用户名
DenyGroups sftp

或:

AllowUsers 用户名

(未在列表中的账号会被拒绝)

修改后重启 SSH:

sudo systemctl restart ssh

5️⃣ Chroot + SFTP(最容易被忽略)

如果你设置了:

ChrootDirectory /home/xxx

✅ 必须满足:

  • ChrootDirectory 属主必须是 root
  • 权限必须是 755711
  • 用户 不能拥有该目录写权限

❌ 错误示例:

/home/sftpuser 属主 sftpuser

✅ 正确示例:

sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser

用户上传目录应放在子目录中:

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

6️⃣ 用户 shell 不正确

SFTP 用户 shell 必须是有效的登录 shell。

查看:

grep 用户名 /etc/passwd

如果是:

/bin/false
/usr/sbin/nologin

改为:

sudo chsh -s /bin/bash 用户名

或(仅 SFTP):

sudo chsh -s /usr/lib/openssh/sftp-server 用户名

7️⃣ 密码认证被禁用

如果看到:

Permission denied (publickey)

说明服务器只允许密钥登录。

检查:

PasswordAuthentication no

改为:

PasswordAuthentication yes

然后:

sudo systemctl restart ssh

三、查看日志(最重要

在 Ubuntu 上,登录失败原因 90% 都在日志里

sudo tail -f /var/log/auth.log

然后尝试登录,观察报错。


四、快速自检清单 ✅

你可以逐条确认:

  • [ ] systemctl status ssh 正常运行
  • [ ] 防火墙放行 22
  • [ ] 用户未锁定
  • [ ] sshd_config 中允许 SFTP
  • [ ] Chroot 目录权限正确
  • [ ] 用户 shell 正确
  • [ ] /var/log/auth.log 无报错

五、如果你愿意,我可以直接帮你定位

你可以把下面信息发我(可打码):

  1. 客户端报错截图或文字
  2. /var/log/auth.log 中相关错误
  3. /etc/ssh/sshd_config 内容
  4. 用户创建方式(是否用于 Chroot)

我可以直接告诉你 是哪一条配置导致的,并给出精确修改方案

0