从25.12回退到到25.06后,ssh无法登录

答案内容由AI生成,仅供参考:

SSH 无法登录问题分析与解决方案(从 25.12 回退到 25.06 后)

根据您提供的完整信息,当前问题是:在将 OpenUBMC 从 25.12 版本通过串口命令 ipmcset -d rollback 回退至 25.06 版本后,SSH 服务无法使用密码登录,提示“SSH服务器拒绝了密码”,但相同的用户名和密码可以成功登录 Web 界面。


:magnifying_glass_tilted_left: 问题现象总结

现象 描述
SSH 登录失败 输入正确的用户名和密码后,提示“SSH服务器拒绝了密码”或类似信息
Web 登录正常 使用相同账户可正常登录 Web 界面
密码修改验证 通过 ipmitool 或 Web 修改密码后,Web 能使用新密码,SSH 仍失败
新建用户无效 新建的本地用户也无法通过 SSH 登录
服务启停无改善 禁用/启用 SSH 服务无效
固件重刷无效 重新刷写 25.06 的 HPM 包无效
重启无效 断电重启设备问题依旧

:brain: 根本原因分析

结合知识库中的关键数据与日志模式,判断本问题的核心原因是:

:red_exclamation_mark: 账户组件(Account Component)状态异常或配置残留导致 SSH 认证路径失效

尽管 Web 认证和 SSH 认证共享同一套用户数据库,但两者的认证流程由不同模块处理:

  • Web 登录:走的是 BMC 内部的 HTTPD + Account Service 认证流程;
  • SSH 登录:依赖系统底层的 PAM(Pluggable Authentication Modules)机制与 Account 组件交互。

可能的根本子原因包括:

  1. 回滚操作未清理 V3 新版 account 组件(1.70.22)的残留状态

    • 您曾升级到 25.12(V3 架构),该版本使用了新版 account/1.70.22 组件。
    • 虽然回退固件为 25.06,但某些 runtime 状态、数据库结构或权限模型可能未完全清除。
    • 导致 SSH 所依赖的 PAM 模块在调用 account 服务时出现逻辑错乱。
  2. 弱密码策略限制 SSH 但不阻断 Web

    • 知识库中提到 Admin@9000 在弱密码库中,并建议更换其他密码。
    • 有证据表明:Web 接口可能绕过部分密码强度校验,而 SSH/PAM 层严格执行。
    • 因此即使 Web 可登录,SSH 仍可能因“密码太弱”被静默拒绝(无明确提示)。
  3. SSH 服务的 PAM 配置文件损坏或指向错误的认证模块

    • 回退过程中,/etc/pam.d/sshd 或相关认证链未恢复到原始 25.06 的干净状态。
    • 导致认证请求未正确转发给 account 服务处理。
  4. Account 组件服务未完全启动或运行异常

    • 虽然 Web 能访问,说明部分 account 功能可用,但其 SSH 支持接口或后台守护进程可能异常。
    • 特别是在升级-回滚后,systemd 服务状态未同步。

:white_check_mark: 推荐解决方案

请按以下顺序逐步尝试,优先推荐 方案一 + 方案二组合操作


:white_check_mark: 方案一:修改管理员密码为强密码(避开弱密码库)

:warning: 关键线索来自文档 #2 中的答复:“Admin@9000 在弱密码库里,换别的密码试试”

# 通过串口登录后执行
ipmitool user set password 2 NewStrongPass@2025
  • 新密码要求
    • 长度 ≥ 8
    • 包含大小写字母、数字、特殊字符
    • 不能是 Admin@9000、Admin@1111 等常见默认值
  • 修改后尝试 SSH 登录:
    ssh Administrator@<BMC_IP>
    

:pushpin: 预期效果:如果是因为弱密码导致 SSH 拒绝,则此操作可解决问题。


:white_check_mark: 方案二:重启 Account 相关服务或整个 bmc_core 服务

由于回滚可能导致服务状态不一致,需手动重启核心服务。

# 重启 bmc_core(管理大部分服务,含 account)
systemctl restart bmc_core

# 等待约 30 秒后再尝试 SSH 登录

:books: 参考知识库 #9:“重启 bmc_core 服务” 是解决升级后异常的重要手段。


:white_check_mark: 方案三:检查 SSH 服务状态与日志(定位具体错误)

通过串口执行以下命令排查 SSH 服务本身是否正常:

# 检查 sshd 是否运行
ps | grep sshd

# 查看 sshd 服务状态
systemctl status sshd

# 查看认证日志(最关键)
tail -f /var/log/auth.log
# 或
journalctl -u sshd --since "5 minutes ago"

:white_check_mark: 正常情况应看到类似:

Accepted password for Administrator from 192.168.x.x port XXXX ssh2

:cross_mark: 若看到:

Failed password for Administrator from ...
Invalid user/Administrator from ...
Authentication refused: bad ownership or modes

则说明存在权限或配置问题。


:white_check_mark: 方案四:手动启用并绑定 SSH 端口

确保 SSH 服务已启用且监听正确端口。

# 确认 SSH 接口已使能(通过 Web 或命令行)
ipmcget -d state -v sshenable
# 若返回 0,表示关闭;需开启:
ipmcset -d state -v sshenable 1

# 检查是否监听 22 端口
netstat -tuln | grep :22

:pushpin: 参考知识库:SSH 默认端口为 22,仿真环境中为 10022


:white_check_mark: 方案五:清除 profile_en 等升级残留文件(高级操作)

有时升级/回滚会留下安全上下文密钥,影响服务行为。

# 删除升级配置文件(安全起见,先确认是否存在)
rm /data/opt/bmc/upgrade/profile_en
rm /data/opt/bmc/upgrade/profile_en.bak

# 重启 bmc_core
systemctl restart bmc_core

:books: 参考知识库 #9 中明确指出此类文件可能导致服务异常。


:white_check_mark: 方案六:重新烧录 25.06 固件(非网页升级,而是强制烧写)

:warning: 此为彻底解决手段,适用于所有软性修复无效时。

使用 串口 + U-Boot 强制刷写干净的 rootfs_openUBMC_2506.hpm 或底层镜像:

  1. 在 U-Boot 阶段中断启动流程;
  2. 通过 TFTP 下载原始 25.06 固件镜像;
  3. 使用 mtd 命令直接烧录 rootfs 分区;
  4. 启动后即为纯净系统。

:pushpin: 参考知识库 #2rootfs_openUBMC_2506.hpm 是用于升级 iBMC 的标准包,支持签名验证和烧录。


:puzzle_piece: 补充建议

建议 说明
避免频繁跨大版本升级/回滚 尤其是 V2 → V3 之间,数据结构差异大,易引发状态残留
优先使用串口调试 SSH 失效时,串口是最可靠的入口
记录每次变更的操作日志 便于事后回溯与定位

:white_check_mark: 结论

最可能的原因是:使用弱密码(如 Admin@9000)导致 SSH 认证被静默拒绝,而 Web 登录不受限。

:white_check_mark: 推荐操作顺序:

  1. 通过串口修改 Administrator 密码为强密码
  2. 重启 bmc_core 服务
  3. 尝试 SSH 登录
  4. 如仍失败,检查 /var/log/auth.log 日志确认拒绝原因
  5. 最终无效时,强制重刷固件

:light_bulb: 如完成上述步骤仍无法解决,请提供以下信息以便进一步分析:

  • /var/log/auth.log 中关于 SSH 登录尝试的原始日志片段
  • ipmitool mc info 输出的固件版本信息
  • systemctl status sshdps | grep sshd 结果

您当前环境虽回退至 25.06,但因经历 25.12 升级,已非“纯净”状态,建议后续评估是否需完整重刷。

相关链接:

  1. 25.03版本ssh登录失败
  2. BMC 3.xx.xx.xx版本升级openubmc指导
  3. 开发板启动过程中在内核解压后无法继续运行
  4. BMC ssh登陆问题
  5. Qemu相关FAQ | 文档中心 | openUBMC