关注

嵌入式 Linux(以泰山派为例)忘记 SSH 密码怎么办?无需重装系统的重置方案

一、适用场景与前提

嵌入式 Linux 系统(如 Ubuntu 20.04 LTS)中,若你忘记了用于 SSH 远程登录的密码(无论是root管理员密码,还是之前创建的普通用户密码,如tspuser),无法通过远程终端登录,此时无需重装系统 —— 只需通过本地操作(连接显示器和键盘)即可快速重置密码。

核心前提:必须本地操作

由于 SSH 密码遗忘后无法远程登录,需满足以下硬件条件:

  1. 给泰山派连接显示器(如 HDMI 屏幕);
  2. 连接USB 键盘
  3. 确保 SD 卡正常启动(系统未损坏)。
  4. 能用串口等其他方式登陆root

二、分情况解决:忘记不同用户的 SSH 密码

嵌入式 Linux 系统中,用户分为root(管理员)和普通用户(如tspuser),忘记两者密码的重置方式略有不同,以下分场景详细说明。

场景 1:忘记 root 密码(最常见,SSH 默认用 root 登录)

root是系统最高权限用户,忘记其密码后,需通过 “根分区可写挂载 + 直接重置密码” 解决,步骤如下:

步骤 1:启动系统并进入本地终端
  1. 给泰山派通电,等待系统启动完成(显示器显示登录提示符或命令行界面);
  2. 若系统默认自动登录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
  1. 若系统未自动登录,可执行su - root,输入新密码,确认能正常切换到root用户;
  2. 重启 SSH 服务(确保新密码生效):
    sudo systemctl restart ssh
    
  3. 在远程设备(如电脑)上测试 SSH 登录:
    # 远程终端输入(替换IP为泰山派的局域网IP,如192.168.167.72)
    ssh [email protected]
    
    • 输入刚重置的新密码,若成功进入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 [email protected]
  • 登录后若需执行管理员命令,可通过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/mmcblk1p6mmcblk1p6是泰山派的根分区,参考之前的分区表)。

问题 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命令。解决:通过 “单用户模式” 启动(适合更复杂的场景,泰山派适用):

  1. 泰山派通电启动,在引导界面(若有)按e进入 grub 编辑模式(若无引导界面,需提前配置 grub 显示);
  2. 在编辑界面找到linux开头的行,在末尾添加init=/bin/bash,按Ctrl+X启动;
  3. 启动后执行mount -o remount,rw /,再执行passwd root重置密码;
  4. 重置完成后执行exec /sbin/init,正常启动系统。

四、重置密码后的安全建议

  1. 设置复杂密码:避免用123456等简单密码,建议组合 “字母 + 数字 + 符号”(如Tsp@2025!),降低被暴力破解的风险;
  2. 禁用 root 直接 SSH 登录:密码重置后,若常用普通用户(如tspuser),可修改 SSH 配置禁用 root 远程登录,提升安全性:
    sudo vim /etc/ssh/sshd_config
    PermitRootLogin no  # 禁止root SSH登录
    sudo systemctl restart ssh
    
  3. 定期备份密码:将重要用户密码记录在安全的地方(如本地密码管理器),避免频繁遗忘;
  4. 开启 SSH 密钥登录:长期使用建议配置 SSH 密钥登录(无需输入密码),彻底解决 “忘记密码” 的问题,具体可参考:
    # 本地生成密钥对(以Windows PowerShell为例)
    ssh-keygen -t rsa  # 按提示生成密钥(默认保存在~/.ssh/)
    # 将公钥上传到泰山派(替换用户名和IP)
    ssh-copy-id [email protected]
    # 后续登录无需密码:ssh [email protected]
    

五、总结

忘记嵌入式 Linux(泰山派)的 SSH 密码无需恐慌,核心是通过本地操作(显示器 + 键盘)重置密码—— 无论是root还是普通用户,都能通过 “可写挂载根分区 +passwd命令” 快速解决,无需重装系统,且不会破坏之前的系统配置(如 23.4G 大分区挂载、已安装的软件)。

若后续想彻底避免 “忘记密码” 的麻烦,推荐配置 SSH 密钥登录,既安全又无需记忆密码,适合长期远程管理嵌入式设备。

转载自CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/2301_80317247/article/details/152722869

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--