Ubuntu 20.04树莓派服务器密码正确却无法登录,修改密码后仍无法通过SSH密码认证
看起来你遇到了挺头疼的认证问题——明明用sudo passwd改密码成功了,不管本地直接登录还是笔记本SSH密码登录都失败,普通用户改密码还报token错误。我来帮你一步步排查解决:
第一步:先解决普通用户改密码报错的根源
你执行passwd时出现Authentication token manipulation error,这几乎都是关键文件权限异常导致的,先检查这两个核心点:
- 检查
/etc/shadow文件权限
这个文件存储了用户的密码哈希,权限必须严格控制,不能随便开放。执行命令:
ls -l /etc/shadow
正常输出应该是这样(权限为640,所属用户组是shadow):
-rw-r----- 1 root shadow 1234 May 20 10:00 /etc/shadow
如果权限不对,用下面的命令修复:
sudo chown root:shadow /etc/shadow sudo chmod 640 /etc/shadow
- 检查用户主目录权限
Ubuntu的PAM认证会拒绝主目录权限过于开放的用户登录。执行命令:
ls -ld /home/ubuntu
正常权限应该是drwxr-xr-x(755)或者drwx------(700),所属用户组必须是ubuntu:ubuntu。如果是777这种全开放权限,赶紧修复:
sudo chown ubuntu:ubuntu /home/ubuntu sudo chmod 700 /home/ubuntu
第二步:解决SSH密码认证失败的问题
你已经确认sshd_config里PasswordAuthentication yes和UsePAM yes是开启的,但还是失败,结合前面的问题,大概率和PAM的认证规则有关:
- 检查PAM的SSH配置
查看/etc/pam.d/sshd文件,确保没有异常规则阻止密码认证:
cat /etc/pam.d/sshd
重点排查有没有类似auth required pam_deny.so这种直接拒绝认证的规则,或者限制特定IP/用户的奇怪配置。如果发现异常,先备份文件再注释掉对应的行。
- 重启SSH服务
不管改了什么配置,都要重启SSH让设置生效:
sudo systemctl restart sshd
- 先测试本地登录再试SSH
先在树莓派本地用键盘屏幕登录,确认密码能正常使用。如果本地登录成功了,再测试SSH密码登录:
ssh -o PreferredAuthentications=password ubuntu@192.168.5.27
额外排查:有没有启用双因素认证?
如果你之前给用户配置过Google Authenticator之类的2FA,即使密码正确,也会因为缺少验证码被拒绝。检查/etc/pam.d/common-auth里有没有auth required pam_google_authenticator.so的规则,如果有,暂时注释掉测试一下。
最后再重置一次密码
确保上面的权限和配置都修复后,重新用sudo重置用户密码:
sudo passwd ubuntu
输入新密码后再尝试本地和SSH登录,应该就能正常认证了。
备注:内容来源于stack exchange,提问作者pitosalas




