← 回到技术随笔
· 6727 字

H3C交换机忘记密码与恢复出厂设置

以H3C Comware V7交换机为例,说明忘记Console或本地用户密码时如何保留配置恢复登录,以及设备改作他用前如何备份并恢复出厂设置。

本文以 H3C Comware V7 交换机为主要示例。BootWare 菜单和按键提示会因型号、版本不同而变化,操作时应按菜单文字确认,不能只记菜单编号。

一、现场场景

很多人一提到交换机忘记登录密码就会想到恢复出厂设置,两者经常被混在一起,其实两者有完全不同的处理方式:

  • 忘记密码,但原配置还要继续使用,可以只修改登录密码;
  • 如果设备准备改作他用,确认原配置不再需要,才需要清空启动配置。

单纯的忘记密码最重要的是保住配置,如果在 BootWare 菜单中误选 Restore to Factory Default Configuration,原来的启动配置可能会被删除。

二、操作前准备

这两种操作都需要重启交换机,正在使用的端口会中断。我会先确认维护窗口,再准备:

  • 一台带串口终端软件的运维电脑;
  • 与交换机匹配的 Console 线;
  • 设备准确型号和 Comware 版本;
  • 最近一次配置备份;
  • 新密码和业务验证人员。

Console 常用参数为 96008N1、无流控。如果现场设备使用的参数不同,以设备手册和现有记录为准。

能通过其他管理员账号登录时,不需要重启,也不要进入 BootWare,直接在命令行修改忘记密码的账号即可。

三、先判断是哪一种密码

常见情况有两种:

忘记的内容 常见表现 修改位置 接下来怎么处理
本地管理用户密码 SSH 或 Console 输入用户名和密码后失败 local-user 视图 还有其他管理员账号时看第四章第1节,否则看第五章
Console 独立密码 Console 只要求输入密码,没有用户名 line console 0 视图 还能通过SSH管理时看第四章第2节,否则看第五章

如果还有其他管理员会话,可以先查看现有配置:

# 查看本地管理用户,确认用户名和允许使用的登录方式。
<HQ-Access-01> display local-user

# 查看当前配置,确认Console使用password还是scheme认证。
<HQ-Access-01> display current-configuration

scheme 表示使用用户名和密码认证,通常对应本地用户或认证服务器;password 表示 Console 只验证一条独立密码。

判断完成后,处理方向很简单:还有其他管理员账号可以登录,就按第四章修改忘记的密码;所有管理员账号和 Console 密码都无法使用,才需要按第五章进入 BootWare。

四、用另一个管理员账号修改忘记的密码

这里说的“还能使用其他管理员账号”,是指交换机上原来就有两个管理账号。例如:

  • netops_hq01 的密码忘记了;
  • emergency_admin 的密码仍然有效,并且具有管理员权限。

这时可以先用 emergency_admin 登录交换机,再给 netops_hq01 设置新密码。整个过程不需要重启,也不会清空交换机配置。

1. 修改本地管理用户密码

先从运维电脑使用仍然有效的管理员账号登录。下面继续使用专栏前文中的管理地址和非默认 SSH 端口,实际值要按现场替换:

# 使用仍然有效的emergency_admin账号登录交换机。
ssh -p 22222 emergency_admin@192.168.100.2

登录成功后,先确认忘记密码的 netops_hq01 确实存在。不要因为记错用户名而新建一个相似账号:

# 查看目标账号及其状态、登录方式和权限。
<HQ-Access-01> display local-user user-name netops_hq01 class manage

确认用户名正确后,再进入这个账号的视图修改密码。使用交互方式输入,可以避免新密码直接出现在命令行和文章截图中:

<HQ-Access-01> system-view
# 进入系统视图。

[HQ-Access-01] local-user netops_hq01 class manage
# 进入现有管理用户视图,用户名要按实际配置填写。

[HQ-Access-01-luser-manage-netops_hq01] password
# 按提示输入并再次确认新密码,输入内容不会直接显示。

[HQ-Access-01-luser-manage-netops_hq01] quit
# 返回系统视图。

修改现有用户密码时,不要顺手改变它的 service-type 和用户角色。原来只能使用 SSH 的账号,不需要为了改密码增加 Telnet 或其他登录方式。

先不要退出 emergency_admin 的会话。在运维电脑上打开第二个终端窗口,使用刚修改的账号重新登录:

# 用netops_hq01和刚设置的新密码建立第二个SSH会话。
ssh -p 22222 netops_hq01@192.168.100.2

能够进入交换机并正常执行授权范围内的命令,才说明新密码有效。然后回到 emergency_admin 会话保存配置:

# 保存已经验证的新密码。
<HQ-Access-01> save safely force

2. 修改 Console 独立密码

如果忘记的是 Console 独立密码,但 SSH 管理员账号仍然可以登录,也可以先通过 SSH 进入交换机,再修改 Console 密码。

只有 Console 当前使用 authentication-mode password 时,才执行下面的命令:

[HQ-Access-01] line console 0
# 进入Console用户线视图。

[HQ-Access-01-line-console0] set authentication password simple Replace-With-New-Console-Password
# 设置新的Console密码。示例密码必须替换,设备保存时会以密文记录。

[HQ-Access-01-line-console0] return
# 返回用户视图。

先保留 SSH 管理员会话,再打开 Console 测试新密码。确认 Console 能够重新登录后,回到 SSH 会话保存:

# 保存已经验证的新密码。
<HQ-Access-01> save safely force

五、所有登录密码都忘记时恢复

1. 进入 BootWare 菜单

把运维电脑接到 Console 口,重新启动交换机。终端出现进入 BootWare 或 BootROM 菜单的提示时,按 Ctrl+B

部分设备会要求输入 BootWare 密码。如果这个密码也被修改并且没有记录,不要尝试网上流传的所谓通用密码,应联系 H3C 技术支持,并准备设备型号、序列号和归属证明。

进入菜单后先看是否显示:

Password recovery capability is enabled.

这行表示密码恢复功能已经启用,可以在不删除启动配置的情况下恢复登录。

2. 优先选择跳过 Console 认证

菜单中存在 Skip Authentication for Console Login 时,优先选择这一项。它只在下一次启动时跳过 Console 登录认证,不会删除原来的配置。

不同型号的编号可能不同,常见菜单中显示为:

Skip Authentication for Console Login

选择后按菜单提示启动系统。交换机会加载原配置,但本次 Console 登录不再要求原密码。

进入命令行后,先确认原配置仍然存在:

# 确认当前和下次启动配置文件没有被删除。
<HQ-Access-01> display startup

# 另存一份当前配置,防止后续修改失误。
<HQ-Access-01> save flash:/before-password-recovery.cfg

# 查看本地用户和Console认证方式。
<HQ-Access-01> display local-user
<HQ-Access-01> display current-configuration

然后根据第三章的判断,修改本地用户密码或 Console 独立密码。新密码测试成功后执行:

# 把新密码保存到启动配置。
<HQ-Access-01> save safely force

# 确认下次启动配置文件正确。
<HQ-Access-01> display startup

最后正常重启一次,并使用新密码重新登录。BootWare 的跳过认证只对一次启动有效,重启后仍能登录,才能说明密码恢复完成。

3. 菜单只有“跳过当前配置”

部分设备没有单独跳过 Console 认证,只提供:

Skip Current System Configuration

这个选项只让设备本次启动不加载原配置,通常不会删除原启动配置文件。此时设备看起来像空配置,但原文件可能仍在 Flash 中。

进入系统后先执行 display startupdir,确认原配置文件还在。不要执行 save,否则空配置可能覆盖原启动配置。

恢复原配置需要使用配置回滚命令,这一步会让管理地址、端口和登录配置立即恢复,可能中断当前连接,只能通过 Console 操作:

<H3C> display startup
# 记下原主启动配置文件名,下面以flash:/startup.cfg为例。

<H3C> system-view
# 进入系统视图。

[H3C] configuration replace file flash:/startup.cfg
# 用原启动文件恢复正在运行的配置,文件名必须按display startup的结果填写。

[H3C] local-user netops_hq01 class manage
# 在当前Console会话仍然有效时,进入需要恢复的本地用户。

[H3C-luser-manage-netops_hq01] password
# 按提示输入并确认新密码。

[H3C-luser-manage-netops_hq01] return
# 返回用户视图。

<H3C> save safely force
# 测试新密码后保存配置。

如果忘记的是 Console 独立密码,就在配置回滚完成后使用第四章的 line console 0 命令修改。

4. 密码恢复功能已经关闭

如果菜单显示密码恢复功能已关闭,跳过认证和跳过当前配置通常不可用。此时为了重新获得管理权限,可能只能选择 Restore to Factory Default Configuration

这个操作会删除下次启动配置并使设备按出厂配置启动,不能保留现有业务配置。没有配置备份时,应先联系 H3C 技术支持确认设备是否还有其他可用处理方法。

六、恢复出厂设置

恢复出厂设置适合设备改作他用、退库或原配置确认不再需要的情况。不能把它当作普通的密码修改方法。

1. 能正常登录时

先把配置备份到交换机和内网服务器,再确认下次启动文件:

# 另存一份清空前配置,文件还要上传到内网备份服务器。
<HQ-Access-01> save flash:/before-factory-reset.cfg

# 查看主用和备用下次启动配置文件。
<HQ-Access-01> display startup

确认备份可用后,删除主用和备用下次启动配置:

# 删除备用下次启动配置。设备没有备用文件时可能提示文件不存在。
<HQ-Access-01> reset saved-configuration backup

# 删除主用下次启动配置。
<HQ-Access-01> reset saved-configuration main

# 确认Next main和Next backup已经为空。
<HQ-Access-01> display startup

# 重启设备。
<HQ-Access-01> reboot

重启过程中如果询问是否保存当前配置,必须选择 N;如果选择 Y,刚才准备清空的配置会被重新保存。确认是否继续重启时选择 Y

部分 Comware V7 设备支持 restore factory-default,它会清除配置和运行数据,完成后还需要按设备提示重启。由于各型号支持情况不同,本文使用步骤更容易逐项核对的 reset saved-configuration 方法。

2. 已经无法登录时

通过 Console 进入 BootWare 菜单,选择:

Restore to Factory Default Configuration

确认提示中明确写着删除配置并恢复出厂状态后,再输入 Y。完成后按菜单提示启动或重启设备。

菜单编号会变化,不能因为其他型号的教程写着“选择 5”就直接输入 5

七、恢复后的检查

设备启动后先通过 Console 检查:

# 查看是否已经不再加载原来的启动配置。
<H3C> display startup

# 查看当前配置,确认原管理地址、VLAN、账号和端口配置已经不存在。
<H3C> display current-configuration

# 查看Flash中还保留哪些文件。
<H3C> dir

恢复出厂配置不一定会删除 Flash 中所有普通文件、软件包和许可证。设备需要退库或交给其他单位时,还要按公司要求处理备份文件、日志、证书和其他敏感文件,不能只看到空配置就认为数据已经全部清除。

如果设备准备重新上线,应重新配置管理地址、SSH、本地用户、ACL、NTP、Syslog 和配置备份,并完成业务验证。

八、Comware V5 版本差异

Comware V5 同样可以使用下面的命令删除下次启动配置:

# 查看当前和下次启动配置文件。
<H3C> display startup

# 删除备用和主用下次启动配置。
<H3C> reset saved-configuration backup
<H3C> reset saved-configuration main

# 重启时不要保存当前配置。
<H3C> reboot

部分较早设备没有主、备用参数,只支持 reset saved-configuration。应以该型号的正式命令手册为准,不能反复尝试删除命令。

V5 的启动菜单可能显示为 BootROM、BootWare 或 Extended BootROM。恢复密码时仍然优先选择跳过 Console 认证或跳过当前配置,不要选择清除 Flash、格式化文件系统或恢复出厂配置。

九、小结

忘记密码时,我的处理顺序是:先看有没有其他管理员账号,再通过 Console 进入 BootWare,优先选择一次性跳过 Console 认证,登录后修改密码并验证。这个过程的目标是保留原配置。

恢复出厂设置则会删除启动配置,只适合设备改作他用、退库或确认原配置不再需要的情况。执行前必须留好备份,重启时不能再次保存当前配置。

完整配置汇总

下面只汇总进入命令行后的操作。BootWare 菜单必须按现场显示的文字选择,不能把示例编号当作固定编号。

忘记本地用户密码

# 通过其他管理员账号或一次性跳过Console认证进入设备后执行。
<HQ-Access-01> display startup
<HQ-Access-01> save flash:/before-password-recovery.cfg
<HQ-Access-01> display local-user

<HQ-Access-01> system-view
[HQ-Access-01] local-user netops_hq01 class manage
[HQ-Access-01-luser-manage-netops_hq01] password
# 按提示输入并确认新密码。
[HQ-Access-01-luser-manage-netops_hq01] return

# 使用第二个会话验证新密码后再保存。
<HQ-Access-01> save safely force
<HQ-Access-01> display startup

忘记 Console 独立密码

# 仅适用于Console使用authentication-mode password的情况。
<HQ-Access-01> system-view
[HQ-Access-01] line console 0
[HQ-Access-01-line-console0] set authentication password simple Replace-With-New-Console-Password
[HQ-Access-01-line-console0] return

# 使用新密码验证后保存。
<HQ-Access-01> save safely force

恢复出厂设置

# 先保存并上传清空前配置。
<HQ-Access-01> save flash:/before-factory-reset.cfg
<HQ-Access-01> display startup

# 删除备用和主用下次启动配置。
<HQ-Access-01> reset saved-configuration backup
<HQ-Access-01> reset saved-configuration main
<HQ-Access-01> display startup

# 重启时遇到保存当前配置的提示选择N,确认重启选择Y。
<HQ-Access-01> reboot

参考资料