嵌入式 Linux(以泰山派为例)忘记 SSH 密码怎么办?无需重装系统的重置方案
一、适用场景与前提
在嵌入式 Linux 系统(如 Ubuntu 20.04 LTS)中,若你忘记了用于 SSH 远程登录的密码(无论是root
管理员密码,还是之前创建的普通用户密码,如tspuser
),无法通过远程终端登录,此时无需重装系统 —— 只需通过本地操作(连接显示器和键盘)即可快速重置密码。
核心前提:必须本地操作
由于 SSH 密码遗忘后无法远程登录,需满足以下硬件条件:
- 给泰山派连接显示器(如 HDMI 屏幕);
- 连接USB 键盘;
- 确保 SD 卡正常启动(系统未损坏)。
- 能用串口等其他方式登陆root
二、分情况解决:忘记不同用户的 SSH 密码
嵌入式 Linux 系统中,用户分为root
(管理员)和普通用户(如tspuser
),忘记两者密码的重置方式略有不同,以下分场景详细说明。
场景 1:忘记 root 密码(最常见,SSH 默认用 root 登录)
root
是系统最高权限用户,忘记其密码后,需通过 “根分区可写挂载 + 直接重置密码” 解决,步骤如下:
步骤 1:启动系统并进入本地终端
- 给泰山派通电,等待系统启动完成(显示器显示登录提示符或命令行界面);
- 若系统默认自动登录
root
(如之前配置),直接跳过步骤 2,进入步骤 3;若需手动登录,此时因忘记密码无法登录,需执行根分区可写挂载(系统启动后根分区默认可能为 “只读”,无法修改密码):# 关键命令:重新挂载根分区为“可写”模式(否则无法执行passwd命令) sudo mount -o remount,rw /
- 说明:
mount -o remount,rw /
表示将根分区(/
)重新挂载为可读写模式,解决 “只读文件系统” 导致的密码修改失败问题。
- 说明:
步骤 2:直接重置 root 密码
无论是否自动登录,只要本地能进入root
终端(或通过sudo
获取管理员权限),执行以下命令重置密码:
# 执行root密码重置命令(无需输入旧密码,直接设置新密码)
passwd root
- 执行后按提示操作:
New password: # 输入你想设置的新密码(如123456,建议后续改复杂密码) Retype new password: # 再次输入新密码(确认一致性) passwd: password updated successfully # 提示“updated successfully”即成功
- 注意:输入密码时终端不显示任何字符(无星号 / 圆点),正常输入即可,输完按回车。
步骤 3:验证新密码并测试 SSH
- 若系统未自动登录,可执行
su - root
,输入新密码,确认能正常切换到root
用户; - 重启 SSH 服务(确保新密码生效):
sudo systemctl restart ssh
- 在远程设备(如电脑)上测试 SSH 登录:
# 远程终端输入(替换IP为泰山派的局域网IP,如192.168.167.72) ssh root@192.168.167.72
- 输入刚重置的新密码,若成功进入
root@linux:~#
提示符,说明 SSH 密码重置完成。
- 输入刚重置的新密码,若成功进入
场景 2:忘记普通用户密码(如之前创建的 tspuser)
若你忘记的是普通用户(如tspuser
)的密码,且能通过root
用户本地登录(或有root
权限),重置方式更简单:
步骤 1:本地登录 root 用户
通过显示器和键盘,本地登录root
用户(若忘记 root 密码,先按 “场景 1” 重置 root 密码)。
步骤 2:重置普通用户密码
执行以下命令,通过root
权限重置普通用户密码(无需知道旧密码):
# 格式:sudo passwd 普通用户名(如tspuser)
sudo passwd tspuser
- 按提示设置新密码:
New password: # 输入普通用户的新密码(如tsp123) Retype new password: # 再次确认 passwd: password updated successfully # 提示成功即完成
步骤 3:测试普通用户 SSH 登录
远程设备上用新密码登录普通用户:
# 远程终端输入(替换IP和用户名)
ssh tspuser@192.168.167.72
- 登录后若需执行管理员命令,可通过
sudo 命令
(如sudo apt-get update
),输入普通用户的新密码即可获取权限。
三、常见问题排查(重置密码时遇到的报错)
问题 1:执行passwd
时提示 “Read-only file system”(只读文件系统)
原因:根分区默认挂载为只读模式,无法修改密码文件。解决:重新挂载根分区为可写:
sudo mount -o remount,rw /
- 若提示 “mount: /: can't find in /etc/fstab.”,说明根分区挂载信息未在
/etc/fstab
中,直接执行mount -o remount,rw /dev/mmcblk1p6
(mmcblk1p6
是泰山派的根分区,参考之前的分区表)。
问题 2:重置密码后 SSH 仍提示 “Access denied”
原因:可能是 SSH 配置禁止了该用户登录(如PermitRootLogin
未设为yes
),而非密码问题。解决:本地登录root
,检查并修改 SSH 配置:
# 编辑SSH配置文件
sudo vim /etc/ssh/sshd_config# 确保以下配置(以root为例):
PermitRootLogin yes # 允许root通过SSH登录
# 若为普通用户,无需额外配置(默认允许普通用户登录)# 重启SSH服务
sudo systemctl restart ssh
问题 3:无法本地登录 root(系统未自动登录,且忘记密码)
原因:系统启动后直接进入登录界面,无法输入mount
命令。解决:通过 “单用户模式” 启动(适合更复杂的场景,泰山派适用):
- 泰山派通电启动,在引导界面(若有)按
e
进入 grub 编辑模式(若无引导界面,需提前配置 grub 显示); - 在编辑界面找到
linux
开头的行,在末尾添加init=/bin/bash
,按Ctrl+X
启动; - 启动后执行
mount -o remount,rw /
,再执行passwd root
重置密码; - 重置完成后执行
exec /sbin/init
,正常启动系统。
四、重置密码后的安全建议
- 设置复杂密码:避免用
123456
等简单密码,建议组合 “字母 + 数字 + 符号”(如Tsp@2025!
),降低被暴力破解的风险; - 禁用 root 直接 SSH 登录:密码重置后,若常用普通用户(如
tspuser
),可修改 SSH 配置禁用 root 远程登录,提升安全性:sudo vim /etc/ssh/sshd_config PermitRootLogin no # 禁止root SSH登录 sudo systemctl restart ssh
- 定期备份密码:将重要用户密码记录在安全的地方(如本地密码管理器),避免频繁遗忘;
- 开启 SSH 密钥登录:长期使用建议配置 SSH 密钥登录(无需输入密码),彻底解决 “忘记密码” 的问题,具体可参考:
# 本地生成密钥对(以Windows PowerShell为例) ssh-keygen -t rsa # 按提示生成密钥(默认保存在~/.ssh/) # 将公钥上传到泰山派(替换用户名和IP) ssh-copy-id tspuser@192.168.167.72 # 后续登录无需密码:ssh tspuser@192.168.167.72
五、总结
忘记嵌入式 Linux(泰山派)的 SSH 密码无需恐慌,核心是通过本地操作(显示器 + 键盘)重置密码—— 无论是root
还是普通用户,都能通过 “可写挂载根分区 +passwd
命令” 快速解决,无需重装系统,且不会破坏之前的系统配置(如 23.4G 大分区挂载、已安装的软件)。
若后续想彻底避免 “忘记密码” 的麻烦,推荐配置 SSH 密钥登录,既安全又无需记忆密码,适合长期远程管理嵌入式设备。