news 2026/9/16 22:55:15

华为交换机远程登录配置实战:Telnet与SSH全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
华为交换机远程登录配置实战:Telnet与SSH全解析

很多刚接触华为交换机的人,第一件事往往不是配置 VLAN,而是先想明白:我到底怎么才能远程连上这台设备?机房设备多、Console 线不够用的时候,大家都会想到开 telnet 或者 SSH,把设备接入办公网,然后坐在工位前就能登录配置。这篇内容就围绕“华为交换机基础配置(telnet/ssh 登录)”展开,先把远程登录这条链路彻底讲透,再顺带把交换机初始化、VLAN 规划、密码管理和常见排障串起来,适合刚上手华为设备的新手,也适合已经能把设备跑起来但没规范管理远程登录的兄弟。

我自己的习惯是,拿到一台新交换机,不管它是什么型号,先把远程登录和安全认证搞定,再谈业务配置。因为后面所有的工作,都需要“能稳定进系统”这个前提。文章里我会用 S5720/S5730 系列的命令做演示,这些命令在华为 VRP 平台的大多数机型上通用,个别差异我会单独指出来。

1. 项目背景与整体拆解

1.1 你手里大概率是哪台华为交换机

华为企业网交换机现在最常见的是 S5700、S5720、S5730、S5735、S6730 这几个系列。S5700 属于老一代三层交换机,在不少公司机房里还在服役;S5720 是后来替代 S5700 的明星款,千兆接入再加万兆上行,性价比很高;S5730 和 S5735 则是目前主推的型号,S5735 在中小项目里出现频率极高;S6730 是万兆核心,一般用于汇聚层或中型网络核心。

这些型号虽然硬件规格不一样,但软件平台基本都跑在 VRP(Versatile Routing Platform)上,所以基础配置命令非常接近。首先要做的,是登录设备后看一眼版本,防止命令差异导致误操作:

display version

通过这条命令确认 VRP 版本号,比如 V200R019C00。不同版本对 SSH 的默认策略、密码加密方式会有一点差别,但整体框架不变。

1.2 这次要解决的三个核心问题

远程登录看起来就是一个“能连上”的问题,实际上拆开来看,主要有三件事:

第一,开启远程管理服务。不管是 telnet 还是 SSH,设备默认都是关着的,尤其是 SSH,新一代设备出于安全考虑并没有默认开启,必须先手动打开服务。

第二,建立用户认证体系。登录设备必须有一个身份验证环节。华为交换机支持 password 认证、AAA 本地认证、AAA 远程认证(RADIUS/HWTACACS),我们平时最常用的就是 AAA 本地用户,把用户名和密码直接写在交换机上。

第三,规划好管理网络。设备要能被远程访问,本身得有一个管理 IP,而且这个 IP 必须和你的电脑网络互通。很多人配置完 telnet 却连不上,大多数问题不是出在 telnet 本身,而是管理 IP 不通。

这三件事解决完,远程登录的基本盘就有了。

1.3 演示环境与拓扑说明

为了不让后面的配置显得悬浮,我先定一个最简单的演示环境。手头有一台 S5720 三层交换机,管理 VLAN 用 VLAN 100,管理 IP 是 192.168.100.10/24,交换机 Eth0/0/1 接口连接电脑,电脑 IP 配置成 192.168.100.20/24。

system-view sysname SW-Core vlan batch 100 quit interface vlanif 100 ip address 192.168.100.10 255.255.255.0 quit interface GigabitEthernet 0/0/1 port link-type access port default vlan 100 quit

注意,华为新版本里接口编号可能是GigabitEthernet0/0/1,也可能简写成GE0/0/1,看具体型号和版本。配好之后先用ping 192.168.100.20从交换机侧测试一下和电脑的连通性,通则说明管理链路是通的,后面配置 telnet 或 SSH 才有意义。

2. 远程登录方式选型与管理链路准备

2.1 telnet 和 SSH 到底怎么选

telnet 最大的问题就是明文传输,用户名、密码、配置内容在网络里都是裸奔的,只要有人在中间抓包,账号密码直接泄露。SSH 则通过加密隧道传输所有数据,安全性高一大截。

但如果真的在内网环境、设备就在同一间机房里,telnet 也不是完全不能用,它的好处是配置简单、排错直观,抓包看协议时特别方便。我之前在调试一些老设备时就经常临时开一下 telnet,等调试完再关掉。

对比项telnetSSH(华为里叫 STelnet)
默认端口2322
加密传输不支持支持,密文传输
配置复杂度稍高,需生成密钥对
安全性
适用于纯内网、临时调试跨网段、公网、生产环境
华为默认状态关闭关闭

我的原则是:能上 SSH 就尽量上 SSH,telnet 只作为临时手段。

2.2 VTY 线路是什么

配置远程登录之前,得先弄明白 VTY。VTY 是虚拟终端线路,也就是设备给远程登录用户开放的“虚拟座位”。交换机默认有 5 条 VTY 线路,编号从 0 到 4,也就是说默认最多允许 5 个远程会话同时登录。部分高配型号会开放 0 到 14 共 15 条。

所有 telnet、SSH 用户进来,都要先占一条 VTY 线路。配置 VTY 的地方就是user-interface vty 0 4,这段配置决定了远程用户用什么方式认证、允许使用哪种登录协议。

user-interface vty 0 4 authentication-mode aaa protocol inbound ssh quit

解释一下这行配置的意思:VTY 0 到 4 这 5 条线路,认证方式走 AAA,允许的登录协议只放行 SSH。如果你同时想保留 telnet 和 SSH,就把protocol inbound改成all

2.3 管理 VLAN 和接口规划这件事别偷懒

很多人图省事,直接拿 VLAN 1 做管理。VLAN 1 是设备默认 VLAN,业务流量、设备管理、广播报文全都混在一起,一方面有安全隐患,另一方面万一业务 VLAN 出了广播风暴,管理面也会被拖死。

更好的做法是单独划分一个管理 VLAN,比如 VLAN 100,把管理 IP 配置在interface vlanif 100下面,然后只让管理网段的接口加入这个 VLAN。这样做的好处是管理和业务流量天然隔离,排障、抓包都干净。

规划管理 IP 时我一般会预留几段给设备管理使用,比如 192.168.100.0/24。核心交换机的管理 IP 固定为 192.168.100.10,接入交换机的管理 IP 从 192.168.100.11 开始往下排,同时在核心交换机上记录一份 IP-MAC 对应表,方便日后维护。

3. 一步一步开启 telnet 登录

3.1 打开 telnet 服务

在旧版本 VRP 上,开启 telnet 服务的命令很简单:

system-view telnet server enable

但部分新版本里命令变成了telnet ipv4 server enable,这是因为设备开始支持只对 IPv4 或只对 IPv6 开启 telnet。如果你输telnet server enable报错,就试试完整写法:

telnet ipv4 server enable

配置完可以用下面命令确认服务状态:

display telnet server status

3.2 配置 VTY 认证方式和用户

telnet 服务开启之后,需要告诉设备“谁来登录、怎么认证”。现在普遍推荐用 AAA 认证,因为 AAA 支持独立配置用户等级、登录协议、密码策略,比简单的 password 认证灵活得多。

user-interface vty 0 4 authentication-mode aaa protocol inbound telnet quit aaa local-user admin password irreversible-cipher Huawei@123 local-user admin service-type telnet local-user admin privilege level 15 quit

这几条命令是关键,我逐个讲一下。

local-user admin password创建了一个本地用户 admin,并设置密码。注意现在新版本推荐用irreversible-cipher,也就是不可逆加密保存密码,旧版本常用cipher,安全性要弱一些。

service-type telnet指定这个用户只能通过 telnet 登录。如果后面要让他走 SSH,这一行必须加上 SSH,否则会在登录时直接被拒绝。

privilege level 15把用户等级提到最高。华为设备默认等级是 0 到 15,等级 15 才能进入系统视图并进行全部配置操作。如果用户等级低于 3,即使登录成功也进不了system-view,只能看看状态信息。

3.3 从电脑实测 telnet 登录

配置完成后,在电脑的命令行窗口输入:

telnet 192.168.100.10

如果一切正常,会提示输入用户名和密码,输入 admin 和密码后进入用户视图,提示符变成SW-Core>。如果要进入配置界面:

system-view

提示符会变成[SW-Core],这时候就可以开始配 VLAN、接口了。

我踩过的坑:Windows 系统默认没装 telnet 客户端,输入telnet命令会提示不是内部或外部命令。解决办法是去“控制面板 - 程序和功能 - 启用或关闭 Windows 功能”里勾选“Telnet 客户端”,或者直接用第三方终端工具,比如 PuTTY、SecureCRT、MobaXterm。

另外一个更容易忽略的问题:telnet 使用的是 23 端口,如果 PC 和交换机之间有防火墙,或者交换机上配置了 ACL 限制 VTY 访问,也会导致连接失败。所以配置完 telnet 后,我一般都会立刻用另一台终端的telnet命令回测一遍,确认服务真的在监听。

4. 切换到 SSH:更安全也更严谨

4.1 启用 STelnet 服务并生成密钥

华为交换机的 SSH 实现叫 STelnet(Secure Telnet),本质就是 SSH 服务。开启之前,设备必须先生成一对本地 RSA 密钥,用于 SSH 握手加密。如果设备之前从来没生成过密钥,直接执行:

system-view stelnet server enable rsa local-key-pair create

生成本地密钥对时,系统会提示选择密钥长度。我一般选 2048 位,位数太短不安全,太长握手慢。生成过程如果提示已经存在密钥,可以先删掉再重建,或者直接沿用已有密钥。

生成完密钥后,SSH 服务才算真正可以工作,可以用下面的命令检查:

display rsa local-key-pair public

4.2 配置 SSH 用户认证

接下来配置用户。SSH 用户和 telnet 用户一样,也建立在 AAA 本地用户体系里,但必须额外指定 SSH 相关的属性:

user-interface vty 0 4 authentication-mode aaa protocol inbound ssh quit aaa local-user admin password irreversible-cipher Huawei@123 local-user admin service-type ssh local-user admin privilege level 15 quit ssh user admin ssh user admin authentication-type password ssh user admin service-type stelnet

这里需要注意几个坑。

第一,protocol inbound ssh一旦配置,VTY 线路就只接受 SSH 连接,telnet 会被直接拒绝。如果你还没有完成 SSH 调试,最好先把协议改成all,全部调通后再收紧。

第二,local-user admin service-type sshssh user admin service-type stelnet是两个层面的配置,前者是 AAA 用户的服务类型,后者是 SSH 域里用户授权的服务类型。少了任何一个,登录时都有可能报错。

第三,ssh user admin authentication-type password指定 SSH 用户认证方式为密码认证。如果做密钥认证,则要写成:

ssh user admin authentication-type rsa ssh user admin assign rsa-key admin-rsa

后面这种方式需要先把客户端公钥传到交换机上,配置逻辑不同。

4.3 从电脑用 SSH 连接交换机

配置完成后,在电脑上使用 SSH 客户端连接:

ssh admin@192.168.100.10

第一次连接时,SSH 客户端会提示确认主机指纹,输入 yes 继续,然后输入密码,就能进入交换机的用户视图。如果使用密钥认证,连接会直接跳过头像密码验证。

常用 SSH 客户端有很多,系统自带的 OpenSSH、PuTTY、Bitvise SSH Client、MobaXterm 都可以。我平时在 Windows 上喜欢用 MobaXterm,保存会话方便,多设备管理省事。

4.4 SSH 密钥登录配置实操

如果你嫌每次输密码麻烦,或者想更安全一点,可以做密钥认证。先在自己的电脑上生成一对 RSA 密钥:

ssh-keygen -t rsa -b 2048

默认会生成在当前用户家目录的.ssh目录下,比如/root/.ssh/id_rsa/root/.ssh/id_rsa.pub。公钥文件内容是ssh-rsa 一串字符的形式。

把公钥设法传到交换机上有两种常见方式。

如果交换机本身支持 SCP,可以直接用 scp 把公钥上传,但对于普通管理员来说,最稳妥的还是把公钥内容复制出来,通过 console 或者已有 SSH 会话进入交换机,手动粘贴。

system-view rsa peer-public-key admin-rsa public-key-code begin ssh-rsa AAAAB3NzaC1yc2E... (这里粘贴公钥内容,注意换行格式) public-key-code end quit ssh user admin authentication-type rsa ssh user admin assign rsa-key admin-rsa

粘贴公钥的时候一定不要漏字符,也不要多换行,否则设备解析会失败。配置完成后,重新用 SSH 连接,就能免密登录。

4.5 客户端常见 SSH 报错处理

有一次我帮同事调设备,电脑明明能 ping 通管理 IP,但 SSH 始终连不上,最古怪的是提示shell request failed on channel 0。网上搜了一圈,原因五花八门,有说 SSH 服务端不支持老版本客户端的,有说用户权限不够的。

后来我发现问题出在 VTY 配置和用户 service-type 不一致上。当时设备 VTY 已经限制为只允许 SSH,但 AAA 用户的service-type里没包含 SSH,导致客户端握手成功,但分配不到可用的交互 shell,于是报 shell request failed。调整用户 service-type 后问题立刻消失。

所以遇到 SSH 能连但登不进系统的情况,优先检查四件事:第一,AAA 用户 service-type 是否包含 ssh;第二,ssh user 是否指定了 service-type stelnet;第三,用户是否有足够权限(至少 level 3);第四,VTY 线路的协议策略是否正确。

5. 密码管理:从初始化到日常维护

5.1 通过 console 修改本地登录密码

很多人遇到的问题是:远程登录密码忘了,或者刚配置完用户密码但不小心把密码写在配置里没保存,重启后设备又变回老密码。这时候只要还能通过 console 线进设备,修改密码其实不难。

用 console 线连接设备,在用户视图下进入系统视图:

system-view aaa local-user admin password irreversible-cipher New@Pass123 quit quit save

修改完密码后一定要记得保存配置,否则设备一重启,又回到修改前的状态。save命令执行后会提示是否保存,输入 y 确认。

5.2 忘记远程密码后的恢复思路

如果 console 还能进,密码修改就是上面的路子。真正棘手的是 console 密码也忘了,这时可以通过设备的启动菜单重置。

华为设备重启时,在出现启动进度条之前按 Ctrl+B 进入 BootROM/BIOS 菜单,不同版本提示可能不一样,但都会有一个“跳过配置文件启动”或类似的选项。选择该选项后,设备会以空配置启动,相当于暂时绕过了原来保存的配置。

进入系统后,重新配置管理地址和用户密码,然后保存配置。注意,启动菜单千万不能乱选“恢复出厂设置”或者“清除配置”,除非你确定要清空整台设备。我见过有人想找回密码,结果把整台交换机的配置全删了,最后只能重新一条条敲。

按这个思路,密码找回的恢复步骤大致是这样的:

1. 重启设备,在提示出现时按 Ctrl+B 进入启动菜单 2. 选择跳过配置文件启动(不同型号菜单编号不同) 3. 设备进入空配置状态,用 console 正常登录 4. 重新配置 VTY、认证、用户密码 5. 配置管理 IP 并保存配置

5.3 用户权限等级要理解清楚

华为设备里用户权限等级非常重要。等级分为 0 到 15,0 级只能看极少量命令,1 级可以看状态,3 级能进系统视图做基础配置,15 级是最高权限,几乎什么都能操作。

有的运维图省事,把所有用户都设成 15 级,结果某次误操作把端口全部 shutdown 了。我个人建议是:维护账号给 15 级没毛病,但给同事开只读账号时,等级设成 1 或者 3 就够了,防止误操作酿成大事故。

6. 常用排障命令与问题速查

6.1 telnet/ssh 连接失败原因速查表

远程登录连不上,新手最容易慌,其实顺着链路排查就行了。我从物理层到应用层列了一个表,排查时候对号入座。

现象常见原因排查命令/思路
ping 不通管理 IPVLANIF 不存在、接口不在管理 VLANdisplay ip interface brief
23 端口无响应telnet server not enableddisplay telnet server status
22 端口无响应stelnet server 没开display ssh server status
密码错误反复提示用户配置错误或密码策略过期通过 console 进 AAA 重置密码
提示用户认证失败local-user 的 service-type 不包含对应协议查看 aaa 下用户配置
登录后无法进入 system-view用户权限等级低于 3local-user xxx privilege level 15
提示所有 VTY 线路被占用在线会话达到上限display users
SSH 连接后 shell request failedservice-type 配置不一致检查 ssh user 的 service-type
连接被重置或断开ACL 限制、管理 IP 冲突display acl all、扫 IP 冲突

6.2 登录后查看设备信息与日志

配置完登录后,先别急着配业务,建议先看一眼设备基本信息,心里有底。

display version display current-configuration display device

看运行状态用:

display interface brief display logbuffer

display logbuffer会显示设备日志缓存,如果之前远程登录失败过,这里可能有相关记录。生产环境建议配合日志服务器做日志审计,交换机的日志信息通过info-center loghost可以外发到日志服务器。

如果只是临时排查问题,display trapbuffer可以看近期告警信息,display alarm能看设备硬件告警。

6.3 一条很实用的过滤命令:dis mac | in broad

搜索关键词里有“华为交换机 dis mac | in broad”,这条命令其实是过滤查看 MAC 地址表里的广播 MAC。

display mac-address | include BROADCAST

在二层网络里,广播 MAC(FFFF-FFFF-FFFF)不会正常出现在单播 MAC 表里,如果大量存在,说明网络里可能有广播泛洪或者环路。配合display interface brief看端口收发计数,基本能定位到具体接口。

还有一个更常用的是查看某个 VLAN 下学到的 MAC:

display mac-address vlan 10

排查 IP 冲突和终端无法上网时,这条命令比 telnet 命令本身更有用。

6.4 登录后管理能力增强的一些小习惯

远程登录调通以后,我建议顺手做两件事。

第一,限制 VTY 访问来源。通过 ACL 只允许管理网段访问 VTY,等于给远程登录加了白名单。配置如下:

acl number 2001 rule 5 permit source 192.168.100.0 0.0.0.255 rule 10 deny quit user-interface vty 0 4 acl 2001 inbound quit

这样配置之后,只有源 IP 在 192.168.100.0/24 网段的终端才能远程登录交换机,其他来源一律拒绝。

第二,给管理 IP 做好 MAC 绑定,避免 IP 被别人占用导致管理地址冲突。

interface vlanif 100 arp learning strict quit

更严格的方式是在接入交换机上配置基于接口的 MAC 绑定,但这个要根据现场需求来,基础配置阶段先把管理和业务隔离做好就行。

7. 扩展:多部门子网划分与 VLAN 规划实操思路

7.1 5 个部门、5 个子网怎么划

很多公司网络会按部门划分 VLAN,把不同部门隔到独立子网,既能隔离广播,也方便做权限控制。假设公司有 5 个部门,A 部门需要容纳 100 台主机,B 部门 50 台,C 部门 20 台,剩下两个部门规模先按 30 台估。

这种需求下,不能所有部门都无脑配一个 /24 网段。如果只有三五十台设备的网络,/24 浪费点也无所谓,但到了上百台、多个部门的规模,就得合理规划子网。

的计算方式很简单:主机位长度为 n 时,可用 IP 数是 2 的 n 次方减 2。100 台主机需要 7 位主机位,因为 2 的 7 次方减 2 等于 126,刚好够用,对应掩码 255.255.255.128,也就是 /25。50 台主机需要 6 位主机位,对应 /26。20 台需要 5 位主机位,对应 /27。

部门VLAN网段掩码主机位可用IP数
A部门VLAN 10192.168.10.0255.255.255.1287126
B部门VLAN 20192.168.20.0255.255.255.192662
C部门VLAN 30192.168.30.0255.255.255.224530
D部门VLAN 40192.168.40.0255.255.255.224530
E部门VLAN 50192.168.50.0255.255.255.224530

如果现场还有其他部门,建议预留一整段地址,比如 192.168.60.0/24 和 192.168.70.0/24,方便后续扩容。

7.2 核心交换机上的 VLANIF 配置

规划好子网后,在三层交换机上创建 VLAN 并配 VLANIF 地址,部门网关就落在交换机上。

system-view vlan batch 10 20 30 40 50 interface vlanif 10 ip address 192.168.10.1 255.255.255.128 quit interface vlanif 20 ip address 192.168.20.1 255.255.255.192 quit interface vlanif 30 ip address 192.168.30.1 255.255.255.224 quit interface vlanif 40 ip address 192.168.40.1 255.255.255.224 quit interface vlanif 50 ip address 192.168.50.1 255.255.255.224 quit

如果交换机是三层交换机,VLANIF 之间默认就能路由,不需要额外配静态路由。但要注意,如果交换机本身跑在 VRF 里,或者有多个虚拟路由转发实例,那就需要单独处理路由引入的问题。这个属于进阶场景,基础阶段先把 VLANIF 配好、部门互访测通即可。

7.3 接入交换机接口划分示例

在接入交换机上,需要把端口划分到对应部门 VLAN。比如 A 部门的电脑接在接口 1 到 24 上,那么把这些接口设为 access,并指定默认 VLAN:

system-view vlan batch 10 interface GigabitEthernet 0/0/1 port link-type access port default vlan 10 quit

如果是多台交换机级联,接入交换机和核心交换机之间的互联口需要配置成 trunk,允许对应 VLAN 通过:

interface GigabitEthernet 0/0/25 port link-type trunk port trunk allow-pass vlan 10 20 30 40 50 quit

trunk 口的作用就是帮不同 VLAN 的流量跨交换机传输。如果不放行 VLAN,就算接口配置对了,部门内部通信也会断。

链路聚合也是实际项目中经常遇到的,把多个物理口绑成一个逻辑口,既能增加带宽又能做冗余。不过基础阶段,先确保 VLAN 和 trunk 是通的,再考虑链路聚合不迟。

8. 一些值得养成的好习惯

最后分享几个远程登录配置方面的个人习惯,算不上什么高深技术,但能少踩很多坑。

第一,新设备上来,第一件事就是配好远程登录和密码策略,不要等到业务上架了再补。很多事故都是因为设备裸奔在网络上,被人扫描到 23/22 端口然后暴力破解。

第二,远程登录调通之后,随手把save敲了。我见过太多人配置完不保存,结果设备断电重启,所有配置一夜回到解放前。

第三,不要用 admin/admin123、Huawei@123 这种弱密码。密码至少 12 位,包含大小写字母、数字和特殊字符。华为设备支持的irreversible-cipher虽然能防止密码明文泄露,但也架不住弱密码被猜。

第四,给 VTY 加上 ACL,只允许管理网段访问。这句话前面提到过,但值得再强调一次。远程管理接口暴露给全网段,等于把大门钥匙挂在门口。

第五,console 线一定要随身带一根。远程登录配置再完善,也总有需要现场介入的时候,比如设备配置错了导致远程断开、VTY 被占满、IP 冲突,这时候 console 是唯一救命的通道。

我在实际工作中最常遇见的问题,不是配置命令不会敲,而是配置命令之间互相矛盾。vty 只允许 SSH 但用户 service-type 没加 ssh,前面说过;ACL 放行方向写反了导致管理网段也访问不到,这些都是细节里的魔鬼。把链路从头到尾捋一遍,问题基本都能解决。

如果你照着这篇文章把 telnet 或 SSH 调通了,恭喜你,华为交换机的基础配置你已经掌握了一半。剩下的一半,就是 VLAN、路由、ACL、链路聚合这些业务配置,思路是相通的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/16 22:55:15

车规电感选型:三大电压平台的物理约束与实操七步法

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/16 22:54:51

ABB机器人姿态为什么必须用四元数而非欧拉角

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/16 22:53:36

text-embedding-ada-002 返回 401?TaoToken 这样改 api_base

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/16 22:52:31

QEMU实战:从initramfs到ext4制作根文件系统

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华