Ubuntu 上 SFTP 无法登录 的原因很多,下面按最常见原因 → 排查方法 → 解决方式给你一个系统清单,你可以逐条对照。
SFTP 依赖 ssh,服务没开就会登录失败。
systemctl status ssh
如果没有运行:
sudo systemctl start ssh
sudo systemctl enable ssh
SFTP 用户如果使用 /bin/false 或 /usr/sbin/nologin,但没配置好 SFTP 限制,就会失败。
查看:
grep 用户名 /etc/passwd
如果是:
用户名:x:1000:1000::/home/用户名:/usr/sbin/nologin
✅ 如果你只是想用 SFTP(不能 SSH):
需要在 sshd_config 中配置 ForceCommand internal-sftp
编辑:
sudo nano /etc/ssh/sshd_config
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
sudo passwd 用户名
ls -ld /home/用户名
不能是 777
如果配置了:
PasswordAuthentication no
但你用密码登录 → 必失败
解决:
yes 并重启 sshsudo ufw status
确保 22 端口开放:
sudo ufw allow 22
云服务器还要检查 安全组
在客户端加 -v:
sftp -v user@ip
或看服务器日志:
sudo tail -f /var/log/auth.log
通常会直接告诉你原因(权限 / chroot / shell)
如果你愿意,可以把下面信息发我,我可以直接帮你定位:
sshd_config 相关配置auth.log 报错内容我可以一步一步帮你修好。