温馨提示×

ubuntu sftp为何无法登录

小樊
48
2026-09-08 07:57:21
栏目: 智能运维

Ubuntu 上 SFTP 无法登录 的原因很多,下面按最常见原因 → 排查方法 → 解决方式给你一个系统清单,你可以逐条对照。


一、SSH / SFTP 服务本身未运行

SFTP 依赖 ssh,服务没开就会登录失败。

systemctl status ssh

如果没有运行:

sudo systemctl start ssh
sudo systemctl enable ssh

二、用户被禁止登录(最常见)

1️⃣ 用户 shell 不是合法 shell

SFTP 用户如果使用 /bin/false/usr/sbin/nologin,但没配置好 SFTP 限制,就会失败。

查看:

grep 用户名 /etc/passwd

如果是:

用户名:x:1000:1000::/home/用户名:/usr/sbin/nologin

✅ 如果你只是想用 SFTP(不能 SSH): 需要在 sshd_config 中配置 ForceCommand internal-sftp


三、sshd_config 配置错误(非常常见)

编辑:

sudo nano /etc/ssh/sshd_config

检查以下关键点:

✅ SFTP 子系统是否存在

Subsystem sftp internal-sftp

✅ 是否限制了用户

例如:

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

⚠️ 注意:

  • ChrootDirectory 必须是 root 拥有,且其他用户无写权限
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser

四、密码 / 权限问题

1️⃣ 密码错误

sudo passwd 用户名

2️⃣ 家目录权限不对

ls -ld /home/用户名

不能是 777


五、SSH 禁止密码登录

如果配置了:

PasswordAuthentication no

但你用密码登录 → 必失败

解决:

  • 改用密钥
  • 或改为 yes 并重启 ssh

六、防火墙 / 安全组

sudo ufw status

确保 22 端口开放:

sudo ufw allow 22

云服务器还要检查 安全组


七、查看真实错误(最关键)

在客户端加 -v

sftp -v user@ip

或看服务器日志:

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

通常会直接告诉你原因(权限 / chroot / shell)


八、快速自检清单 ✅

  • [ ] ssh 服务在运行
  • [ ] 用户密码正确
  • [ ] shell 或 internal-sftp 配置正确
  • [ ] Chroot 目录权限是 755 且 root 拥有
  • [ ] 防火墙/安全组放行 22
  • [ ] auth.log 无明确报错

如果你愿意,可以把下面信息发我,我可以直接帮你定位:

  1. Ubuntu 版本
  2. 登录方式(密码 / 密钥)
  3. sshd_config 相关配置
  4. auth.log 报错内容

我可以一步一步帮你修好。

0