ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

S5500-52C-EI交换机Telnet/SSH远程登录配置与加固

S5500-52C-EI交换机Telnet/SSH远程登录配置与加固

说实话,第一次被叫去给一台 S5500-52C-EI 配置远程登录的时候,我在机柜前蹲了快四十分钟——不是配置难,是那台设备塞在最底下那格,Console 线插上去之后人只能歪着脖子看屏幕,键盘放在膝盖上,敲错一个字还得重新挪位置。那台设备是台 48 口千兆的三层交换机,增强版,跑的是 Comware V5 平台,带几个光口和扩展槽,放在接入层做汇聚用。它本身能力不弱,静态路由、ACL、QoS 都支持,但出厂状态下你想碰它,基本只能靠那根 Console 线。所以给 S5500-52C-EI 配置远程登录这件事,看起来只是个开服务、建账号的小活,实际上它决定了你以后是每次都跑机房,还是坐在工位上把活干完。这篇东西主要是写给刚接手网络运维的朋友,也适合那些手上有一台这类设备、想给自己开条管理通道但不确定从哪下手的同学。从地址规划到 Telnet、SSH 两条路,再到加固和排错,我按自己实际操作的顺序捋一遍。

1. 先想清楚:这台交换机到底要开哪几条管理通道

动手敲命令之前,有件事值得先花十分钟想明白:远程登录不是一个功能,它是一组功能的集合。这台 S5500-52C-EI 上能让你"进去"的方式至少有四种,各自的定位完全不同。很多新手一上手就把 Telnet、SSH、Web 全开,觉得多一条路多一份保险,结果几个月后做安全自查,发现管理面开了一堆没人用的入口,自己都说不清哪个是正常业务、哪个是遗留配置。我的习惯是先做减法,明确这台设备未来由谁维护、从哪些网段维护,再决定开什么。

1.1 四种登录方式的定位差异与取舍

Console 是本地物理通道,走设备面板上那个 RJ45 形态的配置口,不依赖任何网络配置,哪怕 IP 地址配错、VLAN 划乱、ACL 把自己锁死,这根线依然能进去。它的价值不在日常使用,而在于"保命"——所有远程配置动作之前,我都建议先确认 Console 通道畅通,因为远程改 vty 权限是很容易把自己关在门外的一类操作。

Telnet 是最容易配通的一种,命令少、客户端现成、Windows 和各类终端软件都支持,缺点也很直白:整条会话包括账号密码都是明文在网络上跑的,同一个广播域里有人做抓包就能看到。它在纯内网、临时调试、或者设备版本太老不支持 SSH 的场景下还有存在价值,但只要是长期使用的管理通道,我不建议只留 Telnet。

SSH 是加密通道,配置步骤比 Telnet 多两三步,核心就是先本地生成一对 RSA 密钥,再开服务。它的价值在于同样的操作体验下把凭据和会话内容都保护起来了,代价是客户端首次连接要确认一次公钥指纹,以及部分老版本终端软件会有兼容性报错。

Web 网管是图形界面,走 HTTP 或 HTTPS,好处是查看端口状态、流量曲线这类信息比命令行直观,坏处是页面加载依赖设备性能和浏览器兼容性,老平台的 Web 界面在现代浏览器上经常出现按钮错位、样式丢失。我的做法是把它当成辅助手段,不作为主要运维入口。

登录方式依赖条件安全性适用场景我的建议
Console物理接触、配置线最高(物理隔离)开局、救急、远程失联必须保留
Telnet管理 IP 可达、服务开启低(明文)内网临时调试可开可关,别只留它
SSH管理 IP 可达、RSA 密钥高(加密)日常运维主通道优先配置
Web管理 IP 可达、HTTP 服务中(取决于是否 HTTPS)状态查看、非专业用户按需开启

这张表不是让你照抄,而是提醒你每开一个入口,都要能回答"谁在用、从哪来、出了问题怎么关"。

1.2 管理地址从哪来:VLAN 与三层接口的规划

远程登录的前提是"能 ping 通",而 ping 通的前提是设备有一个可达的三层接口地址。这台设备出厂时所有端口都在 VLAN 1 里,VLAN 1 的接口默认没有配地址。最省事的做法是直接给 Vlan-interface 1 配个地址,五分钟就能通,但我不推荐长期这么干。

原因很实在:所有端口默认属于 VLAN 1,意味着任何人把网线插到这台设备的任意一个空口上,理论上都能摸到管理地址。办公区里有人随手插一台笔记本、或者某台设备网线插错了口,你的管理面就暴露在一个完全不受控的广播域里。

更稳的做法是单独划一个管理 VLAN,比如 VLAN 10,只把预留的那一两个口划进去,专门接运维终端或者上联到管理网段。地址规划上,我一般会留出一个 /24 的私有网段给管理用,避开业务网段,比如 192.168.10.0/24,网关给 .1,交换机管理地址从 .2 开始往后排,后续加设备就 .3、.4 顺序分配。这里用 /24 而不是更小的掩码,是因为管理网段设备数量少但增长不可预期,/24 有 254 个可用地址,够用很久,而且记起来不费脑子——子网掩码写成 255.255.255.0 就行,别在设备上纠结写 24 还是写全,Comware V5 两种都认,但写全不容易出错。

提示:管理 VLAN 建好之后,记得把对应的物理端口划进去,只配 VLAN 接口地址而不划端口,是最常见的"配了但连不上"的原因之一。

2. 开局那一步绕不开:Console 进设备与出厂状态确认

远程登录的配置必须建立在"已经能本地进去"的基础上,所以 Console 这一步跳不过去。我见过有人想通过恢复出厂、猜默认密码的方式来省这一步,结果把设备搞成半配置状态,反而更麻烦。老老实实找根配置线,五分钟的事。

2.1 线缆与终端参数的实操细节

这台设备面板上的配置口是 RJ45 形态,需要一根 RJ45 转串口的配置线,现在笔记本基本没有串口了,中间还得加一个 USB 转串口模块。这套组合的坑主要在驱动上:USB 转串口模块装完驱动后,在设备管理器里会多出一个串口号,比如 COM3 或 COM5,终端软件里要选对这一个,选错了就是黑屏无输出。

终端参数是固定的:波特率 9600,数据位 8,停止位 1,校验位无,流控无。流控这一项特别容易被忽略,某些终端软件默认开着硬件流控,接上去就是敲键盘没反应,看着像设备死机,其实是流控把字符拦住了。我第一次遇到这情况时以为是设备坏了,折腾了半小时才想起来改这一项。

连接建立后,如果屏幕是黑的,按一下回车。设备正常情况下会回显一行提示符,形如尖括号包起来的主机名,出厂默认一般是设备型号缩写。如果按回车还是没反应,先确认线序和接口是否插到底,再确认终端软件里选的串口号是否正确,最后再怀疑线缆本身。

注意:配置线插拔前最好先退出当前会话,带电插拔虽然一般不损坏设备,但在设备启动过程中插拔有可能导致启动信息乱码,让人误判。

2.2 进来之后先看三件事

进到命令行第一件事不是急着配地址,而是摸清这台设备的现状。我习惯看三个东西:软件版本、当前配置、启动配置。对应的命令分别如下。

<Device>display version <Device>display current-configuration <Device>display startup

display version会告诉你平台版本,比如 Comware Software, Version 5.20, Release xxxx 这一类信息。这一步的意义在于后续所有命令语法都要跟平台版本对齐——V5 和 V7 在用户权限、角色这两个概念上写法完全不同,搞混了会配出一堆不生效的命令。这台 S5500-52C-EI 属于 V5 平台,后面我给的命令都以 V5 为准,涉及 V7 的差异我会单独标出来。

display current-configuration看的是当前运行配置,如果设备之前被人动过,这里能看到已有的 VLAN、地址、账号。有些二手设备或者回收设备,配置里可能残留着前任管理员的账号和 ACL,直接在上面加配置很容易冲突。

display startup看的是下次启动加载的配置文件。如果这里的配置文件和当前运行配置不一致,说明有人改了没保存。这个细节很关键,我在第 7 节会专门讲。

2.3 给交换机配一个能被访问到的管理地址

确认完现状,开始配地址。假设我们采用前面说的管理 VLAN 10,网关 192.168.10.1,交换机管理地址 192.168.10.2,掩码 255.255.255.0。操作分三步:建 VLAN、划端口、配三层接口地址。

<Device>system-view [Device]sysname SW-Core-01 [SW-Core-01]vlan 10 [SW-Core-01-vlan10]quit [SW-Core-01]interface GigabitEthernet 1/0/24 [SW-Core-01-GigabitEthernet1/0/24]port link-type access [SW-Core-01-GigabitEthernet1/0/24]port access vlan 10 [SW-Core-01-GigabitEthernet1/0/24]quit [SW-Core-01]interface Vlan-interface 10 [SW-Core-01-Vlan-interface10]ip address 192.168.10.2 255.255.255.0 [SW-Core-01-Vlan-interface10]quit

端口编号这里要说明一下,不同子型号的电口和光口编号不完全一样,敲命令前先用display interface brief看一眼实际存在的接口列表,别照抄网上的编号。把运维终端接到 1/0/24 这个口上,终端网卡配同网段地址比如 192.168.10.100/24,然后 ping 192.168.10.2 验证。

如果管理终端不在同一个网段,需要跨网段访问,那还得有路由。三层交换机做网关的情况下,通常要一条默认路由指向出口:

[SW-Core-01]ip route-static 0.0.0.0 0.0.0.0 192.168.10.1

这条命令的意思是"所有我不知道往哪送的包,都交给 192.168.10.1"。很多人配完管理地址发现同网段能通、跨网段不通,八成就是缺这条路由,或者对端设备没有回程路由。网络是双向的,你这边知道怎么去,对方也得知道怎么回来。

提示:管理地址配好后,建议先保存一次再继续后续操作。配置远程登录的过程中如果误操作导致会话异常,重启后至少还有一个已知可用的管理地址。

3. Telnet 远程登录:最快能用起来的一条路

地址通了,接下来就可以开远程通道。我先讲 Telnet,不是因为它更好,而是因为它步骤少,能让你最快确认"网络层已经通了、只是应用层还没配",把问题范围缩小。配通之后再关掉或者保留,取决于你的环境要求。

3.1 服务开关与 vty 线路授权

远程登录在设备侧由两部分组成:一个是服务进程,一个是虚拟终端线路。服务进程决定"设备是否在 23 端口上监听",虚拟终端线路决定"连上来的人用什么方式认证、有什么权限"。两者缺一不可,只开服务不配线路,连上去会提示认证失败或者直接被拒。

[SW-Core-01]telnet server enable [SW-Core-01]user-interface vty 0 4 [SW-Core-01-ui-vty0-4]authentication-mode scheme [SW-Core-01-ui-vty0-4]protocol inbound telnet [SW-Core-01-ui-vty0-4]user privilege level 3 [SW-Core-01-ui-vty0-4]quit

逐条解释一下。telnet server enable是打开服务,V5 平台上这个服务默认是开的,但显式敲一遍不亏,能确认状态。user-interface vty 0 4表示同时配置 0 到 4 这五条虚拟线路,也就是最多允许五个并发远程会话,这个范围是设备支持的,改大改小要看具体型号支持情况。

authentication-mode scheme是最关键的一行,它表示"用 AAA 里的用户名密码来认证"。另外两个可选值是none(不认证,极度危险,除非实验室环境否则别用)和password(只用一个全局密码,不区分用户)。scheme 方式的好处是每个账号可以独立设置权限、独立停用,出问题能追溯到人。

protocol inbound telnet限制这条线路只接受 Telnet 协议接入。如果你的规划是只上 SSH,这里就写protocol inbound ssh;如果两种都要,写protocol inbound all。我倾向于明确写死一种,减少意外入口。

user privilege level 3是 V5 平台的用户级别设置,3 是管理级,能执行所有命令。这一行和后面 AAA 里用户的 level 是两个层面,容易混淆,我在 3.3 节展开讲。

3.2 三种认证方式怎么选

上面选了 scheme,就必须在 AAA 里建本地用户,否则谁也登不上。建用户的命令是这样的:

[SW-Core-01]local-user netadmin [SW-Core-01-luser-netadmin]password simple YourStrongPass@2024 [SW-Core-01-luser-netadmin]service-type telnet ssh [SW-Core-01-luser-netadmin]level 3 [SW-Core-01-luser-netadmin]quit

service-type这一行决定了这个账号能用哪些服务登录。写telnet ssh表示两种都行,只写ssh就只能 SSH。这一步特别容易漏,漏了之后表现是"密码明明对的,就是登不上",而且设备不会给你很明确的报错,只会提示认证失败。我见过有人在这上面卡了一下午。

level 3是这个账号的权限级别。V5 平台上,用户名下的 level 和 vty 线路下的 user privilege level,实际生效的是两者中较低的那个,或者更准确地说,用户级别由 AAA 里的设置决定,线路上的设置是给非 scheme 认证方式用的。实操上我的建议是两边都写 3,避免理解偏差。

关于password simple和password cipher的区别,这里必须提醒一句:V5 平台上用 simple 设置密码,执行display current-configuration的时候密码会以明文形式显示出来。这意味着任何能登进设备的人,都能看到你这个账号的密码。如果你的运维规范要求配置文件可以外发或者备份到共享目录,这就是个实打实的泄密点。V7 平台提供了交互式输入密文的方式,V5 上可以用 cipher 参数,但要注意后面跟的字符串被当作已加密内容处理,直接填明文有可能导致登录失败。稳妥的做法是:V5 上用 simple 设置,但配套做好配置文件访问控制,并且这个密码不要和其他系统复用。

3.3 用户级别决定你能敲哪些命令

V5 平台的用户级别从 0 到 3,权限递增。0 级是参观级,基本只能看,能敲的只有 ping、tracert 这类诊断命令和少量显示命令;1 级是监控级,能看大部分 display 输出;2 级是系统级,能做一些系统配置;3 级是管理级,全部命令都能用,包括创建用户、改 ACL、重启设备。

这个分级不是摆设。如果你要给外包人员开一个只能看状态的账号,就该给他 level 1,而不是图省事给 level 3。我遇到过一台设备上五个账号全是 level 3,问起来说"当时没想那么多,先给最高权限免得后面不够用"。这种做法的风险在于,任何一个账号泄露,攻击者都能直接在设备上建新账号、改 ACL、把自己固化下来。

配置级别相关命令的时候有个细节:user privilege level这个命令在不同平台写法不同。V5 上是user privilege level 3,V7 上改成了user-role network-admin。这两者不通用的,你在 V5 设备上敲user-role会直接报错"Unrecognized command"。这也是我强调开局先display version的原因——照着新版本教程配老设备,会浪费大量时间在语法错误上。

3.4 连通性验证与抓包确认

配置敲完之后,从管理终端上测试。Windows 自带 Telnet 客户端默认没启用,需要先在系统功能里勾上,或者直接用终端软件新建一个 Telnet 会话,填管理地址和 23 端口。

登录成功的话,会看到提示符从尖括号变成你设的主机名。这时候做两件事验证:一是敲display users看当前在线会话,确认自己这条连接确实是通过 vty 进来的;二是敲一条只有 level 3 才能执行的命令,比如display current-configuration,如果能出结果,说明权限给对了。

如果连不上,先用telnet 192.168.10.2 23这种方式测端口通不通。命令行环境下能连上会直接进登录提示,连不上会报连接被拒绝或者超时。超时通常是网络层或 ACL 问题,拒绝通常是服务没开或者端口没监听。设备侧可以用display tcp status看当前有哪些 TCP 连接和监听端口,能看到 23 端口是不是处于监听状态。

注意:在设备上执行display tcp status时,如果看到 23 端口有大量半连接状态,可能是有人在扫描你的管理网段,这时候该考虑上 ACL 限制了。

4. SSH 远程登录:真正该上的方案

Telnet 通了之后,我的习惯是紧接着把 SSH 配上,然后把 vty 的 inbound 改成只允许 SSH。原因前面说过,明文传输这件事在内网也不能完全放心——同网段一台被感染的机器就足以把你的管理密码捞走。

4.1 密钥生成这一步不能省

SSH 和 Telnet 最大的配置差异就在这一步。SSH 需要一对非对称密钥,服务端用私钥证明自己身份、用公钥和客户端协商会话密钥。设备出厂时没有这对密钥,所以必须先本地生成。

[SW-Core-01]public-key local create rsa

敲完这条会提示输入密钥长度,可选范围一般是 512 到 2048 位,默认 1024。建议输入 2048,安全性更好。生成过程需要一点时间,设备 CPU 在做大数运算,这时候别急着敲键盘,等它自己算完回到提示符。

这一步有个常见的坑:如果设备之前生成过密钥,再敲这条命令会提示已存在,问你是否覆盖。覆盖会改变公钥指纹,所有保存过旧指纹的客户端下次连接都会报"主机密钥已变更"的警告。这在正常运维里是不该出现的,一旦出现要么是你真的重新生成了密钥,要么就是中间有人在搞事,两种情况都值得停下来查一下。

密钥生成完之后再开服务:

[SW-Core-01]ssh server enable [SW-Core-01]ssh server authentication-type default password [SW-Core-01]ssh server compatible-ssh1x enable

第二条是设置默认认证方式为密码认证,如果不设,某些版本上会出现客户端连上来但认证方式协商失败的情况。第三条是兼容 SSHv1 客户端,现代终端软件基本都支持 v2,但一些内置的、老旧的客户端工具可能只支持 v1。这条要不要开取决于你的工具链,开了会降低一点安全性,不开可能有些工具连不上。我的做法是先不开,遇到连不上再临时开、连上验证完再关掉。

4.2 AAA 本地用户与 service-type 的对应关系

如果 3.2 节建用户的时候service-type里已经包含了 ssh,这一步可以跳过。如果之前只写了 telnet,需要补上:

[SW-Core-01]local-user netadmin [SW-Core-01-luser-netadmin]service-type telnet ssh [SW-Core-01-luser-netadmin]quit

同时把 vty 线路的协议限制改成 SSH:

[SW-Core-01]user-interface vty 0 4 [SW-Core-01-ui-vty0-4]authentication-mode scheme [SW-Core-01-ui-vty0-4]protocol inbound ssh [SW-Core-01-ui-vty0-4]user privilege level 3 [SW-Core-01-ui-vty0-4]quit

改protocol inbound这一条的时候要特别小心。如果你当前正通过 Telnet 会话操作,改成 ssh 之后,现有会话不会立刻断开,但下次你就只能用 SSH 登了。所以顺序一定是:先确认 SSH 能登上,再改这个限制。搞反了就得跑机房。

提示:改 vty 协议限制、认证方式这类"影响登录本身"的配置时,永远保持两个会话窗口——一个用来改,一个保持登录状态不动。改完用新窗口验证,验证失败还能从旧窗口改回来。这个习惯救过我至少三次。

4.3 客户端连接与首次指纹确认

用终端软件新建 SSH 会话,填地址、端口默认 22、协议选 SSH2。第一次连接会弹出一个对话框,显示服务端的公钥指纹,问你是否信任。这一步的本质是防中间人:你没法确定对面那台设备真的是你的交换机,只能靠首次连接时记住指纹,之后每次都比对。

指纹确认之后输入用户名密码,登录成功。设备侧可以用display ssh server status看 SSH 服务状态,包括版本、认证方式、会话数。用display users看在线用户,SSH 会话和 Telnet 会话在输出里能区分开。

实测下来,SSH 登录比 Telnet 稍慢一点,因为有密钥协商过程,通常多等一两秒,属于正常现象。如果超过十秒还没出登录提示,就要怀疑中间有设备拦截或者 MTU 问题导致协商包被丢。

4.4 V5 和 V7 命令差异(踩坑记录)

这一节值得单独拎出来说,因为网上搜到的教程大概率是新版本的,照着配到 V5 设备上会各种报错。我把几个高频差异列在下面。

功能V5 写法V7 写法
线路用户级别user privilege level 3user-role network-admin
本地用户授权level 3authorization-attribute user-role network-admin
用户密码password simple xxxpassword交互式输入
密钥生成public-key local create rsapublic-key local create rsa基本一致
服务开启ssh server enablessh server enable

除了命令写法,还有一个行为差异:V7 上一个用户能否登录某类服务,除了service-type,还受角色(user-role)控制,两处都要配。V5 上没有角色概念,一个 level 就决定了。所以在 V5 上配好了账号但登不上 SSH 的情况,八成是service-type里没写 ssh,而不是权限问题。

我第一次接触这个差异时,是在一台 V5 设备上照着 V7 教程敲user-role network-admin,设备直接回了一行"Unrecognized command found at '^' position"。当时还以为是自己手误敲错了字母,来回核对了好几遍才发现是平台版本不对。从那以后我配任何设备之前都先display version。

5. Web 网管:图形界面到底要不要开

Web 这块我态度比较中性。它有实际价值——查看端口 up/down 状态、看流量趋势、批量看 MAC 地址表,图形界面确实比命令行效率高。但它也有明显短板:老平台的 Web 页面在现代浏览器上经常排版错乱,某些按钮点了没反应,排查起来比命令行还费劲。

5.1 HTTP 与 HTTPS 的开启

V5 平台上开 Web 需要两步,一步是打开 HTTP 服务,一步是给账号授权 web 服务类型。

[SW-Core-01]ip http enable [SW-Core-01]ip https enable [SW-Core-01]local-user netadmin [SW-Core-01-luser-netadmin]service-type telnet ssh web [SW-Core-01-luser-netadmin]quit

ip http enable开的是 80 端口的 HTTP,ip https enable开的是 443 端口的 HTTPS。两个都开的话,浏览器访问 http:// 会自动跳或者需要手动改成 https://。从安全角度,我建议只开 HTTPS,把 HTTP 关掉,因为 HTTP 同样存在明文传输密码的问题,和 Telnet 是一个性质。

只开 HTTPS 之后,部分老浏览器会提示证书不受信任,这是因为设备用的是自签证书,属于正常现象,点继续访问即可。如果设备版本支持导入证书,可以把证书换成内部签发的,这样就不会有告警。

5.2 权限与端口

Web 登录进去之后的权限同样受账号的 level 控制。给 level 1 的账号登 Web,只能看不能改。这一点在做只读监控账号时很有用——给运维值班的同事一个 level 1 的 Web 账号,他能自己看端口状态,不用每次都来找你。

端口方面,HTTP 默认 80,HTTPS 默认 443。有些环境出于规范要求会改端口,但 V5 平台上改 Web 端口的支持比较有限,不同版本行为不一致,我不太建议在这上面花时间。如果确实有端口规范要求,用 ACL 限制源地址比改端口更有效、更稳妥。

Web 界面我一般在配完命令行之后顺手验证一下能打开就关了,不作为日常入口。真正干活还是命令行快,尤其是批量改 VLAN 或者查路由的时候,图形界面一层层点进去反而慢。

6. 加固:别让远程登录变成后门

到这里,Telnet、SSH、Web 三条路都能通了。但"能通"和"安全"是两回事。我见过太多设备,管理服务全开、账号密码是 admin/admin、源地址不限制,等于在网络上挂了个公共入口。加固这一步不难,但很多人配完能登录就收工了。

6.1 用 ACL 把登录源地址锁死

最有效的一招是限制谁能连管理端口。做法是建一个基本 ACL,只放行运维网段,其余全部拒绝,然后把这个 ACL 应用到 vty 线路上。

[SW-Core-01]acl number 2000 [SW-Core-01-acl-basic-2000]rule 0 permit source 192.168.10.0 0.0.0.255 [SW-Core-01-acl-basic-2000]rule 5 deny [SW-Core-01-acl-basic-2000]quit [SW-Core-01]user-interface vty 0 4 [SW-Core-01-ui-vty0-4]acl 2000 inbound [SW-Core-01-ui-vty0-4]quit

这里的source 192.168.10.0 0.0.0.255用的是反掩码写法,0 表示必须匹配,255 表示任意。所以这条规则的意思是"源地址在 192.168.10.0 到 192.168.10.255 之间的放行"。rule 5 的 deny 是兜底,拒绝其他所有来源。规则编号 0 和 5 之间留了间隔,方便以后插入新规则。

应用 ACL 之后立刻验证:从允许的网段登一次,确认能进;如果条件允许,从一个不在允许列表里的地址试一次,确认被拒。这一步不能省,我遇到过 ACL 写反了导致自己被锁在外面的情况——好在当时 Console 线还插着,从本地进去改回来的。

注意:ACL 应用在 vty 上是"入方向",管的是"谁连进来",不影响设备主动发起的连接。另外,如果你是通过一条已经建立的会话在配这条 ACL,配置生效后现有会话通常不会被立刻踢掉,但新连接会按新规则执行。

6.2 超时、并发、重试参数的取值逻辑

vty 线路上有几个参数值得调一下,都是跟"会话管理"相关的。

[SW-Core-01]user-interface vty 0 4 [SW-Core-01-ui-vty0-4]idle-timeout 10 0 [SW-Core-01-ui-vty0-4]screen-length 30 [SW-Core-01-ui-vty0-4]history-command max-size 20 [SW-Core-01-ui-vty0-4]quit

idle-timeout 10 0设置空闲超时为 10 分 0 秒。默认值通常也是 10 分钟。这个值的取舍逻辑是这样的:设太短,你看个配置文档回来会话就断了,得重新登;设太长,人走了没退出,会话一直占着,别人连不上,而且终端没人看着也是个风险。10 到 15 分钟是比较舒服的区间。设置为 0 表示永不超时,除非特殊场景,我不建议。

并发数由user-interface vty 0 4决定,五条线路就是五个并发。如果你的运维团队人多,或者有自动化脚本要连,可能会不够用。扩大范围要看设备支持多少个 vty,敲user-interface vty ?能看到上限。但并发数开太大也不好,会占用设备资源,一般团队五到十个足够。

screen-length 30是设置每屏显示多少行后暂停,敲空格继续。默认 24 行,改大一点少按几次空格。这个纯粹是体验优化,不影响功能。

history-command max-size 20是历史命令缓存条数,用方向键上翻可以调出之前敲过的命令。默认值可能只有 10 条,改大点在做复杂配置时很方便。

6.3 关掉不用的服务、管好密码明文

加固的最后一步是清理。配完 SSH 并且验证稳定之后,如果环境允许,把 Telnet 服务关掉:

[SW-Core-01]undo telnet server enable

Web 如果不用,同样处理:

[SW-Core-01]undo ip http enable [SW-Core-01]undo ip https enable

关之前一定要确认还有别的通道能进。我的顺序是:Console 保底 → 配 SSH 并验证 → 关 Telnet → 观察一周 → 关 Web。中间任何一步出问题都能回退。

密码管理这块,除了前面说的 V5 上配置文件明文显示的问题,还有个细节:定期改密码这件事在设备上没法自动做,得靠流程。我自己的做法是把管理密码存在密码管理器里,设个日历提醒,每季度换一次,换的时候同步更新所有相关设备的配置备份说明。听起来麻烦,但比出了事再补救省事。

另外,service-type里别留多余的服务。比如你只打算用 SSH,就别在 service-type 里写 telnet。虽然服务关了 telnet 也进不来,但配置上的冗余会让人产生误解,接手的人看到 service-type 里有 telnet 会以为这条通道是开着的。

7. 常见问题与排查实录

这一节是我这些年在这类设备上踩过的坑的汇总。远程登录连不上,原因就那么几类,按层次排查比瞎试快得多。

7.1 连不上的分层排查顺序

我的排查顺序固定是"物理层 → 网络层 → 传输层 → 应用层",一层一层往上走,不要跳。

物理层看线插没插、口灯亮不亮、终端网卡是不是 up。这一步最容易被跳过,觉得"线肯定没问题",结果就是线松了。

网络层看能不能 ping 通管理地址。ping 不通的话,用display ip interface brief看 VLAN 接口是不是 up。这里有个反直觉的点:VLAN 接口的物理状态跟着 VLAN 里有没有 up 的端口走,如果 VLAN 10 里一个 up 的端口都没有,Vlan-interface 10 就是 down 的,地址配了也不通。这是新手最容易卡住的地方。

传输层看端口通不通。设备侧用display tcp status看 22、23 端口有没有在监听。没监听就是服务没开。客户端侧可以用 telnet 命令加端口号测,能连上会直接进登录提示。

应用层才是账号密码、协议类型、ACL 这些。这三层都通了还登不上,才去查display local-user、display ssh server status、vty 的 ACL。

现象最可能的原因排查命令处理方式
ping 不通管理地址VLAN 接口 down / 端口没划进 VLANdisplay ip interface brief、display vlan 10检查端口状态和 VLAN 成员
ping 通但连不上 23Telnet 服务未开display tcp statustelnet server enable
提示认证失败本地用户未建 / service-type 不含对应协议display local-user补 service-type
密码对但登不上用户 level 不足或被 ACL 拦display local-user、display acl 2000检查 level 和 ACL 规则
SSH 连接被拒RSA 密钥未生成display ssh server statuspublic-key local create rsa
SSH 协商失败客户端版本不兼容客户端日志临时开启 SSHv1 兼容
登录后命令不全用户级别是 1 或 2display local-user调整 level
重启后配置丢失未执行 savedisplay startup执行 save 保存

这张表我基本是照着背下来的,遇到问题先对号入座,能省掉大半排查时间。

7.2 登上了但权限不对

这个问题的表现是:能登进去,提示符也对,但敲某些命令提示"Permission denied"或者直接不识别。原因基本就两个:用户 level 不够,或者 vty 上的user privilege level设得比 AAA 里低。

排查步骤是先display local-user看这个账号的 level 是多少,再看 vty 配置。V5 上用户名下的 level 是权威设置,线路上的设置主要影响非 scheme 认证。如果两边都设了 3 还是不行,那就看是不是这个命令本身在当前平台不支持——比如你想在 V5 上敲 V7 的命令,提示的是"Unrecognized command",不是权限问题,两者报错信息不一样,注意区分。

还有一种情况是自己把自己降权了:用当前账号修改了自己的 level,从 3 改成 1,改完之后当前会话不会立刻失效,但下次登录就是 1 级了。这时候如果没别的 3 级账号,就只能靠 Console 进去改回来。这也是为什么我建议至少保留一个备用的 3 级账号,平时不用,只在紧急情况启用。

7.3 重启后配置全没了

这个问题在老设备上出现频率不低,原因只有一个:配完了没保存。Comware 的运行配置在内存里,掉电或者重启就没了,只有执行save才会写到启动配置文件里。

<SW-Core-01>save

执行后会问是否保存到当前文件名,输入 Y 确认。保存完用display startup核对一下,看"Current startup saved-configuration file"和"Next main startup saved-configuration file"指向的是不是你以为的那个文件。有些设备上存在多个配置文件,启动时加载的可能不是你刚保存的那个。

我有个习惯,每次做完一批配置,不管大小,都执行一次 save。代价是几秒钟,收益是避免一次通宵。曾经有一次改完 ACL 忘了保存,第二天设备因为机房断电重启,ACL 全没了,之前拦住的扫描流量又回来了,好在发现得早。

提示:save 的时候如果提示配置文件已存在是否覆盖,选覆盖。另外,保存前最好确认当前配置是你想要的状态,别把半截配置存进去了。

7.4 会话被自己踢掉怎么办

这个场景听起来好笑但很常见:正在配 vty 的 ACL,规则写反了,把当前来源地址 deny 了。现有会话不会立刻断,但你一退出就再也进不来了。

应对办法有两个层面。事前层面,就是前面反复说的双窗口保底——一个窗口改,一个窗口不动。事后层面,如果真的被锁在外面,只能靠 Console 本地进去,用display acl 2000看规则,把错误的那条undo掉。所以 Console 通道的物理可达性一定要保证,别把配置线收起来放到仓库最里面。

还有一个类似的场景是改protocol inbound。把 vty 从 telnet 改成 ssh,如果你还没验证 SSH 能登就退出了 Telnet 会话,那就只能跑机房。这个我在 4.2 节强调过,这里再提一次,因为踩的人真的多。

设备侧还可以用display users看当前在线会话,输出里每一行有个流水号,如果某个会话卡死了占着线路,可以用free user-interface vty 0强制释放。这个命令要慎用,别把正在干活的同事踢了。

8. 配置备份与批量维护的一点延伸

单台设备的远程登录配完,事情其实只做了一半。真实环境里这类设备往往不止一台,接入层十几台、汇聚层两三台是常态。如果每台都手工敲一遍,一是慢,二是容易漏。

我的做法是先把一台配好、验证通过,然后把配置导出成文本,作为模板。导出用display current-configuration,把输出完整保存下来。之后配新设备时,把模板里跟本机相关的部分改掉——主机名、管理地址、默认路由——其余部分直接粘贴。

粘贴的时候要注意终端软件的粘贴速度和设备的处理能力。一次性粘贴几百行,设备可能来不及处理导致丢字符,表现为某几条命令没生效。稳妥的做法是分段粘贴,每段几十行,粘完用display current-configuration核对一遍。有些终端软件支持设置字符发送间隔,调成每字符几毫秒,能明显减少丢字符。

配置备份这件事也值得提一句。设备上的配置建议定期导出保存,保存的时候注意前面说的密码明文问题——如果配置文件要放在共享目录,至少加个压缩密码。我一般是每季度导一次,改过配置就额外导一次,文件名带上日期,出问题能回溯到某个时间点的状态。

回过头看,给一台 S5500-52C-EI 配远程登录这件事本身不复杂,命令加起来不到二十行。真正花时间的是那些细节:管理 VLAN 怎么划、V5 和 V7 的命令差异、改配置的时候怎么保住自己的会话、配完记得 save。我个人在实际操作中的体会是,凡是涉及"登录入口"的配置,永远给自己留一条退路再动手——Console 线别拔、旧会话别关、改完先验证再收尾。这套习惯养成之后,配置本身反而成了最轻松的部分。

RELATED READING

延伸阅读

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