ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

F5 BIG-IP密码恢复:console与tmsh重设root/admin

F5 BIG-IP密码恢复:console与tmsh重设root/admin

简介:面向F5 BIG-IP运维与网络管理人员的密码恢复操作文档,针对遗忘管理员密码后无法登录设备的问题,覆盖Ver 9.0、10.0、11.0三个系统版本。内容围绕控制台接入与密码重置展开,说明在具备物理访问或控制台连接条件时,使用超级终端、SecureCRT或PuTTY以19200波特率连接设备,结合tshark、tclsh及tmsh命令完成root与admin账户密码修改,并给出save /sys config保存配置、quit退出和reboot重启等收尾操作,附F5官方解决方案4178与11190供对照。压缩包仅含1个docx文件,大小约92KB,结构紧凑,便于随取随查。已有537人学习,文档于2014年整理并在指定版本测试通过,适合需要快速恢复设备访问权限、核对命令与排错思路的初中级运维人员参考,也可作为版本适配和操作风险提示的案头资料。

1. 半夜三点,图形界面进不去时你只剩一根 console 线

F5 BIG-IP 的管理页面打不开、SSH 连上去就断开、手上只有一根 RJ45 转 DB9 的 console 线,密码还没人记得——这是我见过最多的求助场景。这份资料讲的是一套 F5 BIG-IP 密码恢复流程,覆盖 Ver 9.0、10.0、11.0 三个版本,核心动作是在控制台上用 tmsh 重设 root 与 admin 的密码,保存配置后重启生效。它不解决“从 Web 界面把密码找回来”这种幻想,只解决你人站在机柜前、物理接触得到设备时,怎么把登录权限拿回来。适合运维、驻场工程师、接手历史设备的人,也适合想搞清楚 BIG-IP 认证模型到底怎么分层的人。前提是设备归你管、你有授权,这条边界先划清楚,后面所有命令才有意义。

2. 认证这条链路是怎么断的:从 Web 登录到 tmsh 的四层结构

想改密码,先得知道密码存在哪、被谁读走。BIG-IP 的认证不是一个大单体,而是几层拼起来的,不同版本拼法还不一样。很多人第一次上手会犯一个错:在 9.x 上用 11.x 的命令,或者改完系统账户以为 Web 也能登,结果两头都不通。这一章把链路拆开,后面敲命令时你就知道每一条在动哪一层。

2.1 一次登录要过四道门

第一道是接入层。Web 管理走的是设备上的 httpd 进程,SSH 走 sshd,console 走 tty 上的 getty 加 login。三条路的入口不同,但往下都会汇到同一套认证模块。

第二道是认证模块,也就是 tmsh 的auth子系统。它负责维护本地用户条目、密码散列、角色(admin、operator、guest 之类),配置文件放在/config下的认证相关文件里,由 tmsh 统一读写。你在命令行里敲modify auth ...,动的就是这一层。

第三道是系统账户。root 和 admin 在设备上是两套东西:root 是底层 Linux 的系统账户,能进 bash;admin 是 BIG-IP 的管理账户,进的是 tmsh 上下文,权限受角色约束。10.x 和 11.x 之后两者被逐步打通,9.x 时代还比较分离,这也是为什么同一份文档里会同时给出modify auth password root和modify auth user admin prompt-for-password两种写法——它们改的不是同一个对象。

第四道是会话缓存。已经登录的会话不会因为你改了密码就失效,httpd 也可能缓存认证结果。这就是为什么改完密码必须用新会话验证,而不是看着旧窗口还活着就以为成功。

提示:判断自己在哪一层,最快的办法是敲id和echo $SHELL。回显是 bash 还是 tmsh,决定了你接下来该用系统命令还是 tmsh 命令。

2.2 为什么是 19200,而不是 9600 或 115200

串口参数错一个,屏幕上就是一堆菱形和乱码,你会以为是设备坏了。BIG-IP 的 console 默认速率是 19200,这个值在引导阶段就已经生效,所以改波特率不只是“连不上管理口”的问题,你连 BIOS 和引导日志都看不到,后面进单用户模式之类的手段全部失效。

参数取值说明
波特率19200出厂默认,引导阶段同样生效,不要改
数据位8标准配置
停止位1标准配置
校验None开校验会导致大量乱码
流控NoneRTS/CTS 必须关掉,否则字符会丢

终端工具用哪个都行,SecureCRT、PuTTY、minicom、screen 都能干活。Linux 环境下我一般直接用 screen,省掉一层配置界面:

# 先确认串口设备名,USB 转串口通常是 ttyUSB0 或 ttyUSB1 ls -l /dev/ttyUSB* # screen 直连,参数是 设备名 + 波特率,8N1 是 screen 的默认值 screen /dev/ttyUSB0 19200 # 退出 screen 的按键序列:先 Ctrl-A,再按 K,然后确认

逻辑说明:screen后面跟设备名和速率,其余参数走默认的 8 数据位、1 停止位、无校验、无流控,正好对上设备要求。之所以推荐 screen 而不是图形化工具,是因为它会话断了重连快,而且不会因为你误按某个快捷键把流控打开。参数要改的只有设备名,插不同的 USB 口设备名会变,这一点在笔记本上尤其容易踩。

用 minicom 的话,先minicom -s进配置界面,把波特率设成 19200、流控设成 None,保存成默认配置,之后直接minicom就能连。

# 进配置界面,改完选 Save as dfl 保存,再 Exit 退出 minicom -s

2.3 三个版本能走到哪一步

这份资料明确写了 Ver 9.0、10.0、11.0 都实测通过,但“通过”不代表三条路一样平。版本差异主要体现在登录后落到哪个 shell,以及 tmsh 的能力边界。

版本登录后默认环境改密码主路径备选路径
9.0bash 为主,tmsh 能力有限/usr/bin/passwd改系统账户若 tmsh 可用则走 auth 模块
10.0bash,tmsh 需手动进入tmsh modify auth ...passwd 兜底
11.0tmsh 成为默认 shelltmsh modify auth ...passwd 兜底

这张表解释了一个很常见的困惑:为什么有人在 9.x 上照着 11.x 的文档敲tmsh modify auth password root,回显却是命令不存在或者参数不认。不是文档错了,是那一代的 tmsh 还没接管认证配置。9.x 上更可靠的做法是退回系统层,用passwd改,再确认 Web 侧能不能读到新密码——读不到就说明两套账户还没打通,需要在 tmsh 里再补一次。

版本判断别靠猜,登录进去敲一条就知道:

# 查看当前软件版本与补丁级别 tmsh show sys version # 如果 tmsh 不可用,退回系统层看版本文件 cat /VERSION

逻辑说明:show sys version是 tmsh 原生命令,输出里带主版本号和 hotfix 号,比看登录 banner 可靠。参数没有可调的,重点看输出里的 Product 和 Version 两行,Version 决定你走哪条路径。如果这条命令本身报错,说明当前环境的 tmsh 不可用,直接按上表的备选路径走。

3. 走通一次密码重置:从 console 登录到 reboot 的完整命令流

原理清楚了,落地就是一条条敲。这一章按真实操作顺序走一遍,每一步给命令、给回显预期、给参数含义。中间会指出原始文档里几个容易照抄出错的地方,尤其是被扫版 OCR 吃掉字母的那几条。

3.1 第一步:从 console 登录并落到 shell

把串口线接好,终端参数按上一章设成 19200 8N1 无流控,给设备断电重启或者直接敲回车,能看到登录提示。

# 登录提示处,用户名输入 root login: root # 密码位置故意输错,连续错几次 Password: (随便输,回车) # 部分版本会直接落到 bash,部分版本落到受限上下文 # 落地后先确认身份和 shell id echo $SHELL

逻辑说明:这一步的关键不是“输错密码”,而是利用 console 本地登录在认证失败后给出的受限 shell。物理接触是前提,远程 SSH 走不到这一步。id用来确认当前 uid,正常应该是 uid=0;echo $SHELL告诉你当前是 bash 还是 tmsh,决定下一步敲哪种语法。

如果输错几次后设备直接回到登录提示、不给 shell,说明这个版本收紧了失败后的行为,那就得走单用户模式:重启设备,在引导菜单处中断,给内核参数追加单用户标记,进系统后先mount -o remount,rw /把根分区挂成可写,再改密码。这条路更重,但适用面更广。

注意:单用户模式改完必须再mount -o remount,ro /或者直接正常重启,别让设备停在可写状态跑业务。

3.2 第二步:改 root 密码

原始文档里这条命令写成了Tmshmdify auth password root,这是扫描件把tmsh和modify粘在一起、还吃掉了一个字母的典型结果。正确写法是两条独立的部分:

# 进入 tmsh 上下文(如果当前已经是 tmsh 提示符,跳过这条) tmsh # 修改 root 密码,命令会交互式要求输入两次新密码 modify auth password root # 回显预期: # New password: # Retype new password:

逻辑说明:modify是 tmsh 的配置变更动词,auth是认证子系统,password表示操作对象是密码字段,root是目标账户。执行后进入交互式输入,不会把明文留在命令行里,这一点比直接在命令后面跟密码安全得多。

参数说明:把结尾的root换成admin,就是改管理账户;如果写成modify auth password(不带账户名),部分版本会提示你从列表里选,交互步骤更多,不建议在紧张的时候用。改完不要急着退出,先用list auth user确认条目已经更新。

# 确认本地用户条目与角色,看 root 和 admin 是否都在列表里 list auth user

3.3 第三步:改 admin 密码,两种写法的区别

admin 是日常登录 Web 和 SSH 用的账户,多数场景下比 root 更需要重置。原始文档给了两种写法,都能用,但适用场景不同。

# 写法一:prompt-for-password,交互式读取新密码 modify auth user admin prompt-for-password # 写法二:直接指定 password 对象 modify auth password admin

逻辑说明:写法一走的是用户对象上的密码提示属性,命令本身会拉起一次隐藏输入;写法二走的是密码字段的直接赋值。两种在 11.x 上结果基本一致,差别在于写法一会把“下次登录提示改密码”这类策略标记一并考虑进去,写法二更直接。团队协作场景我一般推荐写法一,因为命令历史里不会留下任何密码痕迹。

参数说明:user admin里的admin是账户名,如果你的设备改过默认管理账户名,换成实际的;prompt-for-password是一个布尔型动作,不带值。执行完同样用list auth user复核。

9.x 上如果 tmsh 这条路走不通,退回系统层:

# 退出 tmsh 回到 bash,用系统命令改账户密码 quit passwd root passwd admin

逻辑说明:passwd改的是 Linux 系统账户,tmsh modify auth改的是 BIG-IP 配置库里的用户条目。9.x 上两者可能不同步,所以改完系统账户还要回 tmsh 里确认一次,否则会出现“命令行能登、Web 登不上”的割裂状态。

3.4 第四步:保存配置与重启,顺序不能反

改完密码不保存,等于白干。原始文档里写的是save /sys config或save sys config,两种在 tmsh 上下文里都能识别,前者带路径前缀,后者是简写。

# 在 tmsh 上下文里保存系统配置 save sys config # 回显预期: Saving running configuration...

逻辑说明:BIG-IP 的配置分运行配置和落盘配置,modify只改内存里的运行配置,save才把它写进/config下的持久化文件。不执行这一步,重启后所有改动回滚,你会以为方法失效,其实是漏了一步。

参数说明:sys config指系统级配置,包含用户、认证、网络等;不要写成save config,那是不存在的对象路径。保存完再退出、重启:

# 退出 tmsh 上下文 quit # 重启设备让认证服务重新加载配置 reboot

逻辑说明:多数版本上改完密码不重启也能生效,但 9.x 和部分 10.x 的 httpd 会缓存认证结果,重启是最稳的收尾动作。重启前确认业务是否在维护窗口内,别在高峰期把一台承载业务的设备踢下去。

提示:HA 双机环境不要两台一起重启,先做主设备、验证、再处理备设备,否则配置同步会把你的改动覆盖掉。

4. 避坑:五条在机柜前翻过的车

这套流程本身不复杂,翻车基本都翻在细节上。下面五条是我见过出现频率最高的,每条按现象、原因、解决三段写,照着对号入座就行。

4.1 现象:命令敲下去回-bash: mdify: command not found

原因:直接复制了扫描版文档里的命令。扫描件在识别时会把tmsh modify粘成Tmshmdify,把modify吃掉首字母变成mdify,肉眼扫一遍看不出问题,粘进终端就报错。

解决:所有命令手工补全再敲,别信复制粘贴。完整的写法只有三种形态:tmsh modify auth password root、tmsh modify auth user admin prompt-for-password、tmsh save sys config。如果你在 tmsh 上下文里,去掉开头的tmsh即可。敲之前先看一眼首字母对不对,mdify和modify差一个字符,报错信息却完全不指向真正原因。

4.2 现象:主设备改完密码,备设备登录还是提示密码错误

原因:改认证配置这个动作默认不走配置同步,尤其是单机执行modify auth时。HA 对里两台设备各有一套本地用户库,你只动了其中一台。

解决:两台分别执行一遍改密码流程,或者改完主设备后手动触发一次配置同步,再登录备设备验证。顺序上先主后备,避免同步方向反了把主设备的改动冲掉。同步完成后用新会话分别登两台,不要只测一台就收工。

4.3 现象:重启之后密码又变回原来那个

原因:只敲了modify,没敲save sys config。运行配置改了,落盘配置没动,重启时系统从/config里读回旧值,你的改动全部丢失。

解决:养成“改完必存”的肌肉记忆。判断有没有存成功,看save的回显有没有保存动作的输出,别只看没报错就默认成功。更稳的做法是改之前先打个 UCS 备份包,改完存一次,重启后再存一次,形成双保险。

4.4 现象:串口窗口里全是菱形、问号和乱码

原因:三个可能。波特率不是 19200;流控被打开了;串口线是只接了三根线的简易线,缺地线导致电平漂移。前两个占九成。

解决:先把终端软件的流控彻底关掉,RTS/CTS 和 XON/XOFF 都设成 None,波特率锁死 19200、8 数据位、1 停止位、无校验。还乱码就换一根带完整屏蔽的 console 线。判断是不是线的问题有个土办法:给设备断电再上电,如果引导日志也是乱码,问题在线或参数,不在设备。

4.5 现象:passwd执行报Read-only file system

原因:从单用户模式或救援模式进来的,根分区默认挂载为只读。这时候任何写操作都会失败,包括改密码和保存配置。

解决:先重新挂载根分区为可写,再执行改密码,改完再挂回只读或直接重启。

# 把根分区重新挂成可写 mount -o remount,rw / # 执行改密码 passwd root # 改完挂回只读,或者直接 reboot 让系统按正常流程重新挂载 mount -o remount,ro /

逻辑说明:remount是在已挂载的文件系统上改挂载选项,rw是读写,ro是只读。这一步不做,后面的passwd和save全是白费。参数只有挂载点一个,写/表示根分区,别写成/config,那是另一个挂载点。

5. 改完密码别急着走:三条自检与一个回退位

密码改完、设备重启完,很多人这时候就收工了,结果第二天同事反馈登不上,又得重新来一遍。我现在的习惯是固定跑三条自检,再加一个改之前的回退位,五分钟的事,能省掉一次返工。

第一条自检是用全新会话登录。旧会话不会因为你改了密码就失效,看着它还活着完全没有参考价值。开一个新的终端窗口,分别用 admin 走 SSH、用浏览器走 Web,两条路都过一遍。Web 能登、SSH 不能登,说明 tmsh 配置库改了但系统账户没同步,回第 3 章补一次passwd。

# 新开一个终端,不要复用当前会话 ssh admin@设备管理地址 # 登录成功后确认角色,admin 应该能看到完整命令树 tmsh list auth user

第二条自检是看认证日志。登录失败的原因经常藏在日志里,比瞎猜快得多。

# 查看认证相关日志的尾部,重点看失败记录和时间戳 tail -n 50 /var/log/secure tail -n 50 /var/log/auth.log

逻辑说明:不同版本日志路径不一样,9.x 和 10.x 更偏/var/log/secure,11.x 上还有 tmsh 自己的审计日志。参数-n 50控制行数,改成-n 200能看到更早的记录。看日志的重点是时间戳对不对得上你刚才的操作,对不上说明你看的不是同一个时间源。

第三条自检是确认配置真的落盘了。重启一次再看,是最笨也最有效的验证方式。

验证项命令期望结果
版本确认tmsh show sys version版本号与预期一致
用户条目tmsh list auth userroot 与 admin 都在列表里
配置落盘重启后重复上面两条输出与重启前一致
服务状态tmsh show sys servicehttpd、sshd 处于 running

回退位这一步最容易被跳过:动认证配置之前,先打一个 UCS 备份包。这东西相当于后悔药,改崩了能整机回滚,比一条条命令倒回去快得多。

# 改密码之前先打备份,文件落到 /var/local/ucs 下 tmsh save sys ucs /var/local/ucs/before_pwchange.ucs # 需要回滚时装载备份 tmsh load sys ucs /var/local/ucs/before_pwchange.ucs

逻辑说明:save sys ucs把当前完整配置打包成一个归档文件,包含用户、网络、证书引用等;load sys ucs反向装载。参数是目标文件路径,建议带上日期后缀,避免多次备份互相覆盖。装载 UCS 会影响整机配置,务必在维护窗口做,并且确认备份文件来自同一版本——跨版本装载是另一个坑,轻则配置错乱,重则设备起不来。

这份资料的原始版本是 2014 年整理的,覆盖 9.0、10.0、11.0 三代,命令和踩坑点都按版本对得上,厂商知识库里对应 sol4178 和 sol11190 两篇文档可以对照着看。新版本设备在认证模型上做过调整,老命令不一定照搬就能用,但“console 接入、拿 shell、改密码、存配置、重启验证”这条主干没变。从那以后我每次动认证配置之前,都会先打一个 UCS 包,改完再用全新会话分别登一遍 SSH 和 Web,两条都过了才敢把工单关掉。这套动作多花五分钟,能挡掉后面一整晚的返工。希望帮到你。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进