大概每个做过网络运维的人都接过这种电话设备配置到一半Console口密码不知道被谁改过连不进去现场业务又等着上线。我自己的处理习惯是先稳住对方问清楚设备型号、软件版本和丢密码的具体场景再决定是远程指挥还是直接背Console线过去。H3C交换机的密码清除核心入口就是设备启动阶段的bootroom菜单这个入口用对了十几分钟就能解决问题用错了或者压根进不去就只能在设备跟前干瞪眼。这篇文章我把H3C交换机通过bootroom菜单清除Console密码这件事讲透覆盖Comware V5和V7两代平台从原理到按键时机从菜单选项到密码重置命令再到配置恢复和避坑经验全是一条条实操过的内容。不管你是刚接触H3C的运维新人还是被设备搞得焦头烂额的老手照着做基本都能把设备救回来。1. 密码丢失后的处理边界bootroom为什么是唯一兜底方案1.1 密码到底存在哪很多人以为Console密码存在某个独立芯片里或者写死在设备里这是最常见的误区。H3C交换机的Console登录密码本质上只是配置文件里的一段加密字符串。设备启动时系统会从Flash或CF卡加载startup.cfg配置文件把里面定义的local-user密码、console口认证方式、super密码等全部应用起来。换句话说你输的密码验证是系统在已经加载完配置文件之后做的事情。只要配置文件里那一段内容不生效密码就不存在。问题就变成了怎么让系统启动时不加载或者不完全加载这个配置文件这时候bootroom就派上用场了。H3C设备的bootroom菜单V5平台叫Extended BootWareV7平台还保留BootWare的称呼有点像电脑的BIOS/UEFI它在操作系统完全启动之前运行能直接控制系统从哪里启动、加载哪份配置文件、要不要跳过某些认证。因为这个阶段操作系统和业务配置都没有被加载所以它能在系统外干预整个启动流程。1.2 能登录和不能登录两条完全不同的处理路径先想清楚一个边界问题H3C设备的密码其实分好几种丢失后的处理路径完全不同。如果你还能登录只是忘了从用户视图进入系统视图的super密码那很简单直接用当前能登录的账号进系统视图重新设置super密码即可。V5平台用super password simpleV7平台用super password role network-admin simple。这种情况完全不需要动bootroom。真正需要bootroom出场的是Console口本身登录不进去包括三种典型情况console口下用authentication-mode password设了密码但密码丢了console口用authentication-mode scheme关联local-user但local-user密码丢了或者账号配置异常导致登录直接被拒。只要这三种场景发生系统进不去配置文件里的认证又一直生效那就只能寄希望在bootroom上。这也是为什么我强调bootroom不是鱼腩功能而是H3C设备密码恢复的最后一根救命稻草。2. 进bootroom前的准备串口连接与按键时机的正确姿势2.1 Console线和终端软件参数进bootroom的第一步是让电脑能跟交换机对上话。H3C交换机的Console口一般是RJ45座随机附带的Console线一头RJ45、一头DB9串口或者USB口。如果你用的是USB转串口线先确认驱动装好电脑设备管理器里能看到对应的COM口编号否则终端软件里死活找不到口。打开SecureCRT、Xshell或者任意终端软件新建串口会话串口参数必须设置正确波特率9600数据位8停止位1无校验无流控。这组参数是H3C设备Console口的默认值绝大多数情况下不需要改。重点提醒会话选项里一定要把Flow Control流控的勾全部去掉。流控如果开着CtrlB这类控制字符很容易被串口线两端消化掉你按了半天没反应还以为是设备坏了。设备通电后终端窗口里会开始滚动启动日志。正常情况下会看到设备型号、内存检测之类的信息此时按几下回车如果能出现H3C提示符说明串口链路是通的可以继续往下走。2.2 CtrlB不是想按就能按的清楚怎么进入bootroom之前先理解设备启动的时间线。设备上电后BootROM程序先运行它会显示类似这样的提示Starting...... Press CtrlB to enter Extended BootWare menu:V7平台显示不太一样Press CtrlB to enter BootWare menu...从提示出现到你真正按下CtrlB留给你的窗口往往只有几秒钟。这个窗口不是无限等待的你不按键BootROM就会按照默认参数把系统启动起来。所以实际操作中我的习惯是先让设备断电终端软件连接好然后给设备重新上电眼睛盯着窗口一旦看到Press CtrlB字样出现就快速连续敲击CtrlB而不是只按一下。有一种操作更稳如果你的终端软件支持发送串口break信号可以在启动瞬间发送。但大多数时候手速够了连续按几下肯定能进。唯一的风险是你按得太早在BootROM输出之前就按了那前面几次会被丢弃按得太晚系统已经开始加载了就得等它起来之后reboot再来一次。2.3 进不去bootroom菜单的常见原因进不去菜单是所有人遇到的第一道坎。根据我帮别人排查的经验原因基本集中在以下几个方面终端软件的流控没关。这是最高频的原因尤其SecureCRT默认会对部分串口启用流控。USB转串口线芯片不稳定常见的有CH340、FT232、PL2303后两者相对稳定。PL2303的旧驱动在Win10/11上会抽风。Console口本身有问题。部分设备Console口针脚氧化或者线缆线序不对也会导致乱码或者无输出。按键时机不准。设备如果设置了快速启动等待窗口会缩短到一两秒手速跟不上就错过。部分设备如果已经配置了bootroom密码进入时会提示Password:默认空密码直接回车。如果有人设置了bootroom密码又忘了那这条路也会断这种情况只能联系厂商处理普通运维解决不了。只要是串口连接正常且在启动阶段按到了bootroom菜单本身不会因为设备配置了密码就拒绝进入。它能进是正常现象。3. V5与V7平台的bootroom菜单差异别选错菜单项3.1 V5老设备的Extended BootWare菜单H3C经典的V5平台设备比如S3100、S3600、S5500这些型号进入bootroom后显示的是Extended BootWare主菜单内容大致如下EXTENDED-BOOTWARE MENU |1 Boot System | |2 Enter Serial SubMenu | |3 Enter Ethernet SubMenu | |4 File Control | |5 Restore to Factory Default Configuration | |6 Skip Current System Configuration | |7 Boot Ware Operation | |8 Skip Authentication for Console Login | |0 Reboot | Enter your choice(0-8):这里最容易混淆的是几个跳过选项我逐个说清楚。6 Skip Current System Configuration意思是临时跳过当前配置文件加载。选它启动后设备配置是空的原来的配置文件并没有被删掉只是没被加载。8 Skip Authentication for Console Login意思是临时跳过Console登录认证。选它启动后配置文件正常加载但Console口登录时不需要验证密码直接进系统。5 Restore to Factory Default Configuration这是恢复出厂设置会把设备配置清除并恢复到出厂状态属于破坏性操作平时清密码千万别选错。V5老设备的命令里BootROM程序的版本不同菜单选项会有些差异。早期一些型号的BootROM只有到7没有8跳过Console认证的选项那就只能走跳过配置文件的路线后面实操部分再细说。3.2 V7设备的BootWare菜单V7平台的设备比如常见的S5130、S5560、S6520系列进入bootroom后菜单长这样BOOTWARE MENU |1 Boot System | |2 Enter Ethernet SubMenu | |3 Enter Filesystem SubMenu | |4 Modify Boot Parameters | |5 Skip Authentication for Console Login | |6 Skip Current Configuration File | |7 Enter BootROM Upgrade SubMenu | |8 Skip Authentication for NETCONF Login | |0 Reboot | Enter your choice(0-8):V7和V5最大的区别是5对应Console认证跳过8是跳过NETCONF登录认证别把这两个搞混。6跳过配置文件这个选项两个平台都有作用和风险也一致。V7平台的BootWare菜单里没有单独恢复出厂选项恢复出厂需要在系统视图里用reset saved-configuration命令。所以V7在bootroom层面的误操作风险比V5小一些但菜单项含义照样容易看花眼。3.3 两个平台如何选择正确的菜单项选菜单项看的是你的最终目的。如果设备配置很重要业务不能断太久想保留配置只把密码改掉一定要选跳过Console认证的选项也就是V5的8、V7的5。这是最理想的情况启动后配置全在密码认证被临时拿掉你进系统改完密码保存即可。如果BootROM版本老没有跳过Console认证的选项再选跳过配置文件启动即V5和V7通用的6。启动后是空配置原配置文件还在Flash里但重启前不能手贱执行save否则原配置文件会被覆盖。至于恢复出厂选项我只能说清密码用不到它真要用也得在完全确认配置不重要之后。我在运维群里见过不止一次本来只想清密码手快选了恢复出厂结果整台设备配置全没机房业务直接趴窝。4. 清密码实操跳过认证与跳过配置文件两条完整路径4.1 路径A跳过Console认证保留配置这是我最推荐的路径操作步骤完整记录如下用Console线连接设备终端软件建好串口会话参数设成9600-8-N-1且流控全关。给设备重新上电看到Press CtrlB提示后连续敲CtrlB进入bootroom菜单。V5平台输入8V7平台输入5然后回车。设备提示跳过Console登录认证继续启动。启动完成后系统不会要求输入密码直接进入用户视图出现H3C提示符。先执行display current-configuration把当前配置全部复制保存到本地文本防止后续操作意外丢配置。重新设置密码具体命令在下一节展开。全部改完执行save保存配置然后重启验证新密码能正常登录。整个过程里display current-configuration这一步别省。哪怕你只是想清密码把配置导出来备份一次后面怎么折腾都有退路。V5平台下选8后会看到类似Skip authentication for console login succeeded!的提示然后继续启动。V7平台选5后启动一样不需要密码。4.2 路径B跳过配置文件启动空配置重建没有跳过Console认证选项的老设备或者菜单里根本没那个选项时走这条路。同样是进入bootroom菜单这次选6 Skip Current System Configuration或6 Skip Current Configuration File。选完后设备继续启动但不再加载startup.cfg。启动完成后你会看到一个裸系统配置完全为空Console口默认不需要密码直接进入用户视图。这里有一个非常关键的认知很多人不知道跳过配置文件启动不等于配置文件被删了。原来的startup.cfg还好好躺在Flash里只是这次没加载。所以进入系统后第一件事是执行dir命令确认原配置文件还在H3Cdir Directory of flash: 0 -rw- 2048 Jan 01 2024 00:00:00 startup.cfg确认之后建议立刻把原配置复制一份备份文件防止后面误操作覆盖H3Ccopy startup.cfg startup.cfg.bak之后你再做任何修改配置的操作原配置都有备份兜底。如果确认配置不需要了或者你打算手工重建一套新配置那就直接配、直接save覆盖旧配置也没问题。必须强调的禁区空配置启动状态下如果你还没备份原配置文件就执行了save命令新的空配置或者你后来敲的几行配置会直接覆盖原来的startup.cfg。到时候想反悔都来不及。4.3 删除配置文件最后手段V5老设备如果没有跳过配置选项也可以通过bootroom里的4 File Control子菜单进入文件管理界面在里面删除startup.cfg。这个方法本质上是让设备下次启动时找不到配置文件以空配置启动。效果跟跳过配置文件类似但危险性更大因为删了就是真删了。如果之后你又执行了save新的配置文件会重新生成旧配置彻底无法找回。所以我的建议是只有当设备配置本身就不重要、丢了也无所谓时才用删除配置文件这条路径。否则优先想办法走跳过认证或跳过配置文件的选项保留恢复余地。补充一个小细节在bootroom的文件控制子菜单里不同设备差异很大有的用数字选项导航有的要输入文件名。操作前看清楚屏幕提示别一顿回车把不该删的文件删了。5. 密码恢复后的配置重建比改密码更需要上心的事5.1 重启后别急着操作先把当前配置导出很多时候设备密码丢了真正让人头疼的不是密码本身而是密码恢复后如何把业务配置恢复原样。尤其是走跳过配置文件路径的话配置全空恢复工作量大。如果你是路径A进系统的第一时间display current-configuration把配置复制出来。如果你是路径B空配置启动原配置文件备份在Flash里可以尝试把它导出来到电脑上保存后续再决定恢复方式。有管理IP的情况下可以用TFTP方式把配置文件传到电脑上。假设电脑IP是192.168.1.2交换机接口配好IP后执行H3Csystem-view [H3C]interface Vlan-interface 1 [H3C-Vlan-interface1]ip address 192.168.1.1 24 [H3C-Vlan-interface1]quit [H3C]copy startup.cfg tftp://192.168.1.2/startup.cfg或者用tftp命令上传H3Ctftp 192.168.1.2 put flash:/startup.cfg这样至少把当前设备上残留的配置文本备份出来了尤其是原配置里那些VLAN划分、接口模式、路由条目全是业务命脉。5.2 重建Console登录认证与管理员账户密码清完系统里原来的local-user可能还在也可能被空配置顶掉了。V5和V7在重建管理员时的命令差异很大这里单独列出来。V5平台创建一个Console登录可用的本地用户H3Csystem-view [H3C]local-user admin [H3C-luser-admin]password simple NewPass2024 [H3C-luser-admin]service-type terminal [H3C-luser-admin]quit [H3C]user-interface console 0 [H3C-ui-console0]authentication-mode scheme [H3C-ui-console0]quit [H3C]saveV7平台同样的事情命令略有不同H3Csystem-view [H3C]local-user admin class manage [H3C-luser-manage-admin]password simple NewPass2024 [H3C-luser-manage-admin]service-type terminal [H3C-luser-manage-admin]authorization-attribute user-role network-admin [H3C-luser-manage-admin]quit [H3C]user-interface console 0 [H3C-ui-console0]authentication-mode scheme [H3C-ui-console0]quit [H3C]save forceV7的local-user必须带class manage否则系统会提示用户类型不存在或者无法登录。这是从V5转V7的人最容易踩的坑命令长得差不多但登录时就是报错。如果你不想搞本地用户只想要一个简单的Console密码也可以直接用password认证[H3C]user-interface console 0 [H3C-ui-console0]authentication-mode password [H3C-ui-console0]set authentication password simple NewPass2024这种方式不用建账号适合只限制本地Console口访问的场景。5.3 用备份配置快速恢复业务如果之前有完整的配置文件备份恢复业务就简单了。空配置启动后给设备配上临时管理IP用TFTP把备份配置文件上传到Flash目录再设置为下次启动配置文件并重启H3Ccopy tftp://192.168.1.2/startup.cfg flash:/startup.cfg H3Cstartup saved-configuration startup.cfg H3Creboot重启后设备加载的是你上传的完整配置业务直接恢复。注意文件名是否叫startup.cfg如果叫别的名字用startup saved-configuration指定一下就行。如果没有备份那只能按业务优先级手工重建我的习惯是先恢复管理类配置再恢复数据链路配置最后恢复安全策略顺序反了容易把自己锁在设备外面。5.4 保存配置的时机与坑密码改完、配置恢复完最后一步永远是save。V5平台执行save会问你是否确认默认按Y。V7平台可以直接save force跳过交互。但保存之前想清楚一个问题你现在这台设备上的配置到底是不是你想让它下一次启动后加载的如果你走的是跳过配置文件路径启动当前配置是空的还没重建任何业务就执行save那旧配置就被覆盖了到时候连恢复的机会都没有。我个人的经验是清密码操作结束前先重启验证一遍新密码能正常登录验证通过了再执行save。逻辑很简单save之前所有改动都是临时的重启一次就还原save之后才真正固化一旦固化错误配置又得从头折腾一遍。6. 避坑记录这些错误操作让活越干越久6.1 串口软件流控与按键被吞SecureCRT和Xshell这类软件新建串口会话时默认流控不一定都是关的。流控开启的时候你发送的CtrlB很可能被认成流控字符直接被丢弃屏幕上死活进不了bootroom。处理办法很简单串口会话属性里把Flow Control的勾全部取消。另一个跟按键相关的坑是少部分设备的BootROM等待时间极短提示刚出来就没了。这种设备建议用重启按钮硬重启提前盯着屏幕别用远端reboot不然你看着黑屏干着急操作窗口早就过去了。6.2 跳过配置文件后原配置文件还在吗这个坑我已经反复强调了还是有人踩。Skip Current System Configuration只是跳过加载不是删除文件。启动后Flash里的startup.cfg还在执行dir能看到。如果此时你改了配置并save新的配置会覆盖startup.cfg原配置彻底丢失。想要保留原配置务必在改任何东西之前先把原配置复制成其它文件名比如copy startup.cfg startup.cfg.bak。哪怕你后面把startup.cfg覆盖了也能用备份文件恢复。6.3 密码重置成功却依然登录不进去有几种情况经常让人抓狂。改了local-user密码Console口登录还是报错先检查service-type terminal有没有配上V5平台的local-user默认服务类型可能不含terminal。V7平台再检查class manage有没有写以及authorization-attribute user-role network-admin有没有绑定角色不对登录进去也没有操作权限。还有一种容易被忽略的情况console口认证模式是scheme但你改的是super密码或者只改了user-interface下的set authentication password两边对不上。清密码前先display current-configuration configuration user-interface看清楚Console口到底用的哪种认证模式别改完发现改的不是同一个东西。6.4 一台设备的密码管理习惯最后说点保证以后少加班的建议。每交付一台H3C设备我习惯在本地留一份display current-configuration的文本备份文件名带设备型号、IP地址和日期比如S5130-192.168.10.2-20240115.cfg。日常配置变更后顺手把配置同步更新一次这样即使密码彻底丢失也不至于连配置一起丢。bootroom密码这种功能能不动就不动。默认的bootroom密码是空如果哪天有人设了bootroom密码又不记录等你需要进bootroom清普通密码的时候就会发现自己被堵在最后一道门外那才是真的叫天天不应。