当我尝试连接另一台机器时,执行以下命令后:
user1@host1:~$ ssh user2@host2
user2@host2's password:
我收到:
WARNING: Your password has expired.
You must change your password now and login again!
passwd: must be suid to work properly
Connection to host2 closed.
user1@host1:~$
host1 是 Ubuntu 操作系统机器
host2 是 Buildroot OS 机器
显然我已经更改了密码,但这没有帮助。
出了什么问题?我该如何修复?
答案1
解决方案:
问题的根源在于我的 ARM 板上的日期。这就是“密码已过期”的原因。
要设置正确的日期,请使用:
# date -s '[current date]'
ARM 板上的命令,以及:
# hwclock -w
保留硬件上的日期设置。
答案2
如果你有物理访问该盒子的权限,你可以以 root 身份修复它,除非你在盒子上有另一个用户帐户,并且该帐户没有强制更改密码,并且可以通过 sudo 或 su 转换为 root
答案3
您的 RootFS 中似乎存在多个问题。
- 你的“passwd”可执行文件似乎没有 suid root
- 您的用户设置似乎处于禁用状态。
在这种情况下,我认为您无法通过 ssh 修复它。您可以访问任何形式的控制台(例如:串行)吗?
您是如何创建(或者从哪里获得)您的 RootFS 的?
如果您有权访问控制台,请尝试:
- 直接以 root 身份登录
- “密码 用户名”
- 输入新的密码
- 通过 ssh 重试
- 修复 /usr/bin/passwd 权限(细节取决于是否使用 busybox)