我有一个 RPi,但我忘记了它的密码。我的 PC 上的 ubuntu 命令行上有 ssh 登录历史记录,我希望有办法输入文本历史记录来尝试找到我的密码。如果没有,有没有办法恢复 RPi 密码?我正在运行 Ubuntu Server(不是 Raspbian),无法访问 GRUB。
之前我使用过该history
命令,但它只显示 ssh 命令,而不显示输入的详细信息。
如能提供任何帮助我将非常感激!
编辑 - 有些解决方案不起作用,因为它们适用于 Raspberry Pi 3B 及以下版本,而我有一个 Raspberry Pi 4B
编辑 - 感谢我的一位朋友,我找到了解决方案,我将在下面给出答案。感谢所有帮助过我的人 :)
答案1
为了解决这个问题,我从 pi 中取出 SD 卡并在另一台 Linux 机器上打开它。
在终端中,我使用下面的命令从 root 用户行中删除“x”
sudo nano /mnt/sdcard/etc/passwd
(您可能需要安装 SD 卡或读取 SD 卡的 USB 记忆棒)
然后我就能够将 SD 卡放回 pi 并以 root 用户身份登录,而无需输入密码。
最后,我可以使用该命令创建一个新密码passwd
。
答案2
您可以使用以下方式展示其中的大部分内容:
cat .bash_history
要不就
history
但是,一旦缓冲区已满,只有部分数据会被写入。其余数据将会丢失。您至少可以用 2 种方法处理此问题。
编写一个 bash 脚本来保存它。例如,您可以将
tee
所有内容保存到 STDIN 和您选择的文件中。编辑 ~/.bashrc——此文件中有一行设置了计数上限,另一行设置了文件大小上限。
至于登录凭据,则不行。否则,用户可能会看到彼此的密码。
我不确定凭证存储在哪里,但我几乎可以保证它们是加密的。
编辑 从这里
- 关闭电源并从 Pi 中拔出 SD 卡并将其放入计算机。
- 打开文件‘cmdline。...
- 将 SD 卡放回 Pi 并启动。
- 当提示出现时,输入“su”以 root 身份登录(无需密码)。
- 输入“passwd pi”然后按照提示输入新密码。
答案3
由于这个问题在较新版本的 Ubuntu 中似乎尚未解决:从 Pi 中取出 SD 卡并将其插入可以读取/写入 ext4 文件系统的计算机。安装第二个分区(例如/dev/sdb2
)并编辑<mountpoint>/etc/shadow
文件。
如果你需要输入密码,你可以使用
mkpasswd --method=SHA-512 --stdin
生成一个。删除旧的,添加新的。将卡放回 Pi。正常启动,mkpasswd
现在应该设置您创建的密码。