前阵子在某单位机房做网络改造,手里攥着一台刚上架的华为路由器,需要赶紧开通远程管理通道。现场环境比较特殊,运维人员分散在不同楼层,有人需要临时查看状态,有人要做全面的配置变更,权限级别还不一样。刚开始我下意识就想用最习惯的那种单一密码方式,后来仔细捋了一下需求,才发现华为路由器上Telnet的两种登录认证模式——密码认证(Password)和AAA认证,各有各的适用场景,配置思路也完全不同。这篇文章就把这两种模式的原理、配置过程和实战踩坑记录完整捋一遍。
1. 先搞懂Telnet两种模式的本质差别
很多刚接触华为设备的人,在配置Telnet时都会遇到一个选择:user-interface vty下的authentication-mode到底填password还是aaa?这一步直接决定了后续所有登录逻辑怎么写。如果选错了,要么是所有人都拿着同一个密码,要么是配置完了死活登录不进去。本质上,这就是两种不同的身份校验策略。
1.1 密码认证模式是怎么工作的
密码认证模式是最简单直接的一种方式。所有VTY线路共用同一个密码,只要输入的密码正确,就能成功登录到设备。在这种模式下,设备不关心你是谁,只关心你有没有这个“进门暗号”。配置的时候只需要在VTY接口视图下设置一个认证密码,再关联一下登录用户等级,整个过程几个命令就能完成。
这个设计其实和办公室进大门刷门禁卡是一样的:不管你是哪个部门的,只要有一张有效卡,门就开。好处是配置量小、维护简单,特别适合只有一两个管理员负责的小型网络设备,或者临时需要开通远程管理权限的场景。缺点也很明显,所有人共用同一个密码,看不出到底谁登录了设备,一旦密码泄露,根本没法区分是哪个人操作导致的故障。如果员工离职或者调岗,你只能选择改密码并要求所有人重新记住新密码,非常被动。
另一个容易被忽略的点是,密码认证模式下,VTY用户登录后默认拥有的权限等级和VTY接口下设置的privilege level有关,但这个等级是全局统一的。也就是说,不管张三还是李四登录进来,权限都是同一个档位,做不到按人分配权限。
1.2 AAA认证模式是怎么工作的
AAA认证模式则完全换了思路。它要求每个登录者必须有独立的用户名和密码,设备会把用户输入的账号信息送到AAA模块去校验。AAA(Authentication, Authorization, Accounting)本身是一个完整的框架,在华为路由器上通常用本地认证来实现,也就是在设备本地创建用户账号,并给每个账号单独设定权限等级、可用的服务类型。
这种方式和公司里每个人一套企业邮箱账号的逻辑一样,登录设备时先输入用户名,再输入密码,系统验证通过后,再根据这个账号绑定的权限等级决定你能执行什么命令。谁登录过、什么时候登录、执行过什么操作,都可以通过AAA的记账功能或设备日志记录下来,出了问题能精准定位到人。
当然,代价就是配置步骤明显变多。你需要先进入AAA视图创建用户,设置密码、权限、服务类型,然后再到VTY接口下指定认证方式为AAA。很多新手在配置时容易漏掉“服务类型”这一步,导致账号密码明明是对的,却始终报认证失败。
1.3 两种模式的适用场景怎么选
拿我以前做过的一个项目来说,某公司内部有核心路由器和出口路由器,运维团队有5个人,其中只有两个是高级管理员,其余三个只能查看状态和做常规端口检查。这种情况下如果采用密码认证模式,三个人和两个人共享一个密码,权限等级根本没法区分,高级管理员的一些配置命令就会暴露给所有运维人员,风险很大。换成AAA认证模式之后,每个运维人员用自己的工号登录,普通运维账号只给level 3的查看权限,高级管理员给level 15的全部权限,既满足分工需求,又方便审计。
具体选择建议可以参考下面的对比:
| 对比项 | 密码认证模式 | AAA认证模式(本地) |
|---|---|---|
| 配置复杂度 | 低,几个命令即可 | 中,需要创建用户和绑定权限 |
| 账号管理 | 所有人共用一个密码 | 每人独立账号,可单独管理 |
| 权限分级 | 不支持按人区分 | 支持按账号分配不同等级 |
| 审计日志 | 基本没有登录用户记录 | 有用户登录及操作记录 |
| 适合规模 | 个人实验环境、小型企业单人管理 | 多人运维、有一定安全要求的场景 |
我在实际配置中一般遵循这样的原则:如果只有一个人管设备,或者设备是测试用的,密码认证模式就够了;只要涉及多人远程操作,或者设备在办公网的核心位置,一律走AAA。这不是说密码认证不安全,而是在多人场景下,AAA的可管理性和可追溯性远超密码认证。
2. 实战配置:基于AAA的Telnet登录全流程
明确了要用AAA模式之后,配置思路就清晰了。这一节我把完整的命令和每一步的作用写清楚,包括一些容易遗漏的细节。配置环境以常见的华为AR系列路由器为例,系统版本为比较通用的版本,命令在大部分华为企业网设备上都适用。
2.1 全局开启Telnet服务及基础配置
在配置AAA之前,需要先确认设备已经开启了Telnet服务。默认情况下,华为路由器的Telnet服务可能没有启动,如果你直接去VTY接口下配置,就会发现远程登录根本连不上。
首先进入系统视图,然后开启Telnet服务器功能:
system-view [Huawei] telnet server enable这一步是必须的。有些版本的设备上,命令可能写为telnet server enable,在较新的版本(如V200R010之后)默认可能是开启的,但为了稳妥,我建议在配置前先执行display telnet server status查看一下状态。如果未开启,远程连接时会直接提示 connection refused。
接下来需要配置VTY用户界面。华为路由器默认有VTY 0到VTY 4共5个逻辑终端线路,意味着可以同时支持5个Telnet会话。如果人数较多,可以修改为VTY 0到VTY 14,扩展并发数。命令如下:
[Huawei] user-interface vty 0 4 [Huawei-ui-vty0-4] protocol inbound telnetprotocol inbound telnet这一条用于指定该VTY接口只接收Telnet协议。这里有一个注意点:如果同时需要支持SSH和Telnet,可以配置为protocol inbound all,但如果只开放Telnet,最好明确指定为Telnet,减少不必要的暴露面。
2.2 创建AAA本地用户和权限配置
完成基础开启后,进入核心的AAA配置环节。先创建本地用户,设置密码和权限等级。密码的加密方式建议选择cipher,这样在配置文件里不会明文显示密码。操作如下:
[Huawei] aaa [Huawei-aaa] local-user admin password cipher Huawei@123 [Huawei-aaa] local-user admin privilege level 15 [Huawei-aaa] local-user admin service-type telnet这里逐条解释一下:
local-user admin password cipher ...:创建一个用户名为admin的本地账号,密码用cipher方式加密保存。生产环境下不要用太简单的密码,至少8位,包含大小写和数字符号。local-user admin privilege level 15:给这个账号赋予最高权限等级。华为设备中命令等级分为0~15级,15级是最高级,可以执行所有命令。对于普通运维账号,我一般习惯给到level 3,这样可以看到配置、执行一些基础维护命令,但是无法修改配置。level 3其实是“只读+部分执行”的范畴,具体能执行哪些命令取决于命令本身的等级和用户的等级,我实际测下来,查看类命令基本都够用了。local-user admin service-type telnet:指定这个用户只能通过Telnet服务登录。这一步非常关键,如果漏掉了,即使账号密码正确,Telnet认证也会失败,因为设备会认为该用户没有使用Telnet服务的权限。
如果希望同一个账号也能用于SSH,可以再加一行local-user admin service-type ssh telnet。我在项目里一般是分开账号,比如admin只用于SSH,telnet_admin只用于Telnet,方便各自审计。
2.3 在VTY接口下绑定AAA认证
用户在AAA视图创建好了,接下来需要回到VTY接口视图,把认证方式指定为AAA:
[Huawei] user-interface vty 0 4 [Huawei-ui-vty0-4] authentication-mode aaa这一条是触发AAA认证的开关。配完之后,从远程用Telnet登录这台路由器,就会先提示输入用户名,再提示输入密码,完全走本地用户数据库的校验流程。我之前遇到过一种情况:AAA用户都建好了,VTY也指定为AAA了,但是登录时依然提示“Authentication failed”。后来排查发现,是用户在AAA视图中漏配了service-type telnet,补上之后立刻恢复正常。
配置完成后,可以退出到用户视图,执行display current-configuration configuration aaa查看AAA配置,或者执行display local-user查看所有本地用户信息,确认配置无误。
2.4 验证Telnet登录效果
在路由器本地查看配置无误后,找一台PC,在命令行执行Telnet连接路由器的管理IP地址。正常流程是这样的:
C:\> telnet 192.0.2.1 Trying 192.0.2.1 ... Connected to 192.0.2.1. Escape character is '^]'. Username: admin Password: <Huawei>登录成功后,设备提示符变成<>,表示已经进入用户视图。由于admin账号是level 15,可以直接执行system-view进入系统视图修改配置。如果使用的是level 3的普通账号,则只能执行display等相关命令,尝试进入系统视图时会被设备拒绝。
命令行下的验证是最直观的。没有任何回显提示“密码错误”,那就说明整个AAA链路是通的。如果密码输错三次,VTY可能会被锁定,需要稍等片刻再试,这个后面会在问题排查部分详细说。
3. 实战配置:基于密码的Telnet登录全流程
相比于AAA模式,密码认证模式确实简单,但要在简单中把权限和安全性处理好,也有一些细节值得推敲。下面是一套我在测试环境里常用的密码认证配置。
3.1 配置VTY密码和登录等级
还是先确认Telnet服务已经开启,然后进入VTY视图配置认证方式为password:
[Huawei] user-interface vty 0 4 [Huawei-ui-vty0-4] authentication-mode password [Huawei-ui-vty0-4] set authentication password cipher Admin@123 [Huawei-ui-vty0-4] privilege level 15这里有两处容易踩坑的地方:
第一处是set authentication password这个命令。有的初学者会直接在VTY下使用password关键字去设置,实际上华为的语法是set authentication password,如果用错了设备会提示错误。密码建议用cipher方式存储,避免配置文件出现明文。
第二处是privilege level 15。默认情况下,VTY登录用户的命令权限实际上与“用户级别”有关。如果不设置这个级别,登录后可能只有level 0,只能执行很少几个命令(比如quit、display version之类),连display current-configuration都可能看不到。我建议根据实际需要设置,不一定要给15,如果只是给远程值守人员使用,给到level 3足够了,这样可以防止误操作。
配置完成后,远程Telnet登录时,只会提示输入密码,不会提示输入用户名。密码正确就直接进入用户视图,默认获得VTY下配置的权限等级。
3.2 密码认证模式下如何结合其他细节做优化
密码认证模式下虽然无法按人区分账号,但可以通过限制登录来源地址、限制协议等方式提高安全性。比如在VTY视图下,可以用acl来限定哪些IP地址允许远程登录:
[Huawei] acl 2001 [Huawei-acl-basic-2001] rule 5 permit source 192.0.2.10 0 [Huawei-acl-basic-2001] rule 10 deny source any [Huawei-acl-basic-2001] quit [Huawei] user-interface vty 0 4 [Huawei-ui-vty0-4] acl 2001 inbound这样配置之后,只有来自192.0.2.10这个管理终端的请求才能使用Telnet,其他来源在握手阶段就会被拒绝。这个做法在密码认证模式下尤为重要,因为密码是共享的,来源地址限制等于多了一道防线。
另外,还可以设定VTY的会话超时时间和登录尝试次数:
[Huawei-ui-vty0-4] idle-timeout 10 [Huawei-ui-vty0-4] authentication-mode superidle-timeout 10表示无操作10分钟后自动断开连接。这个配置建议所有人都加上,防止有人登录后忘记退出,长期占用VTY通道,导致其他管理员无法登录。至于authentication-mode super,其实是另一套“超级权限”机制,和Telnet认证是两个维度,这里不做展开,但如果你希望用户登录后提高权限时再输一次密码,可以考虑研究一下super模式。
3.3 两种模式切换时要注意的命令差异
在我接手过的不少设备上,VTY之前被人配置成AAA模式,现在要改回密码模式,操作上只是把authentication-mode aaa替换成authentication-mode password,但往往发生的问题是:密码设了,AAA的本地用户还在,两边都能登录吗?
答案是:不会。VTY接口下同一时间只能有一种认证模式,配置成password后,VTY只校验密码,不再去AAA本地数据库中查询用户名。即使AAA用户仍然存在,也不会影响密码登录,除非你把认证模式改回aaa。
还有一点需要注意,从AAA切到password之前,最好先删除或者确认一下AAA视图中那些残留的本地用户账号,避免后续再次切换时造成混淆。我在项目里见过有人同时维护两套账号体系,不清不楚的,最后连自己都搞混了。
3.4 密码模式下远程登录的实测记录
我实际搭了一套最小化验证环境,设备管理IP为192.0.2.1,VTY配置了密码Admin@123、权限15、ACL只放行管理终端IP。从管理终端执行Telnet:
C:\> telnet 192.0.2.1 Password: <Huawei>只输一次密码,没有用户名输入提示,这就对了。输入错误密码时,设备提示Password:又重新要求输入,三次之后连接会中断。这里和AAA模式不同,密码模式下没有用户名锁定机制,但是反复错误同样会中断,只是不会对具体账号锁死。所以密码模式下,密码设置的复杂度、定期更换频率就显得尤其重要。
4. 常见问题与排查实录
配置Telnet的过程中,很多问题和原理无关,纯粹是命令细节或环境细节没注意。下面整理几个我在实战中反复遇到的高频问题,按照现象、排查思路、解决办法逐一说明,方便大家直接对号入座。
4.1 登录时提示认证失败
现象:远程Telnet设备时,输入用户名和密码后,设备提示Authentication failed,连接断开。
排查步骤:
- 先确认VTY下配置的认证模式。使用
display this在VTY视图下查看,确保authentication-mode和预期一致。 - 如果是AAA模式,检查AAA视图里用户的
service-type是否包含telnet。这是最容易遗漏的地方。 - 检查账号密码是否正确。AAA模式下可以用
display local-user查看用户状态,确认用户没有被锁定。 - 通过Console口登录设备,尝试用本地用户重新登录,排除远程链路本身的问题。
我在一次排查中发现,账号被锁定的原因竟然是之前有人用脚本反复尝试弱口令,触发了设备自带的防暴力破解机制。解决方法是管理员从Console口登录,执行reset local-user相关命令解锁,或者直接改密码。
4.2 远程连接建立后立刻断开
现象:telnet命令能成功连上,但还没输入密码就断开,或者输入密码后进入系统几秒钟就被踢出。
这种情况常见的原因是VTY空闲超时设置过短。之前有个客户反映登录后两三秒就断,我上去一看,VTY用户界面被前人配了idle-timeout 1,意思是1分钟没操作就断开,但为什么感觉只有两三秒?仔细检查,发现他们用的终端工具一直在发送Keepalive字符,结果触发了某些版本的Bug判定。把这个值改回idle-timeout 10后恢复稳定。
还有一种可能性是设备配置了screen-length之类分页参数,或者登录后被ACL规则拒绝执行权限,需要逐项排查。
4.3 登录后看不到任何配置命令
现象:Telnet登录成功,设备提示符也出来了,但是输入display current-configuration提示权限不足,甚至system-view都进不去。
这种问题基本就是等级权限导致的。在密码模式下,检查VTY下的privilege level;在AAA模式下,检查用户创建的privilege level。默认情况下,如果用户没有设置权限等级,可能只有level 0,只能查看少量信息。
我在给普通运维人员开账号时,通常会给level 3。但请注意,level 3能不能查看所有配置取决于设备的命令授权策略,有的设备把部分display命令等级提到了level 5,那就需要把账号等级调到5。这个时候最好的做法不是盲目提高单一账号等级,而是结合命令级别一起看,给账号分配一个够用但不超纲的等级。
4.4 关于Telnet安全的几条心得
说句实在话,Telnet本身是明文协议,所有数据包括密码在网络中都是裸奔的。如果有条件,建议优先使用SSH替代Telnet。但有些老设备或者特定网络环境只能启用Telnet,这时至少要做好以下几点:
- 限定ACL,只允许特定管理主机IP连接设备。
- VTY下限制协议只能为Telnet,不要同时开放一堆未知协议端口。
- 密码强度要足够高,密码模式超过三个月强制更换一次。
- 开启日志和信息中心,记录登录事件,至少能查到谁在什么时候登录过。
- 如果必须用AAA,就好好用,不要嫌麻烦,把每个账号的权限和服务类型都收敛到最小范围。
我在实际项目中曾经为了一台老路由器临时开通Telnet,当时觉得只是内网设备,没加ACL限制,结果后来在日志里发现内网有非管理段的IP尝试连接过设备,虽然最终因密码强度够没有成功,但也惊出一身冷汗。从那以后,无论多小的临时需求,ACL和强密码都是底线。
4.5 两种模式混合使用时的小提醒
有些网络环境会同时使用Telnet和SSH,比如VTY 0到1配置为Telnet,VTY 2到4配置为SSH。这本身没问题,但要注意两条线路的认证模式可以独立配置。如果你在VTY 0-1配了password,VTY 2-4配了aaa,那么从不同线路登录时,认证逻辑完全不同,容易造成“为什么我同一个账号在VTY 2能登录,在VTY 0就报错”的困惑。
我建议在管理方案里统一认证策略,尽量不要混合使用。实在要混合,就要在设备配置旁边注明哪个线路段是哪种登录方式,避免维护人员靠记忆转圈。
5. 实操经验总结与扩展思路
这里不写空洞的总结,只说几个我在反复配置和运维过程中沉淀下来的具体经验。
第一,无论选用哪种认证模式,先把登录来源ACL写好再接网线。很多故障和麻烦都是因为开放了Telnet端口又没有限制来源导致的,ACL这件事优先级高于认证模式本身。
第二,AAA模式下创建用户时,privilege level和service-type缺一不可,但不用一上来就给15级。先给一个最小的需求等级,测试完再逐步开放。我给普通同事开的telnet账号一般是level 3,只有出故障排查时才临时提升到5或者15,解决后立刻降回去。
第三,尽量在设备上开启时间同步,配置NTP。没有准确的时间,AAA的审计日志价值会大打折扣。我遇到过日志里登录时间差几个小时的情况,后来发现设备时间漂了,最后只能靠外部NTP服务器校准。如果设备时间不准,你查“谁在什么时间连接过设备”就是一笔糊涂账。
第四,关于VTY并发数,很多人默认就用vty 0 4,这5个通道理论上够用,但如果设备经常有多个用户同时登录,或者存在部分会话异常残留(比如远程终端断电没释放会话),就会占满通道。我习惯在核心设备上配置user-interface vty 0 14,扩展为15个会话,再配合idle-timeout自动回收空闲连接,这样基本不会因为会话通道耗尽而进不了设备。
第五,如果设备支持并开启了SSH,我始终建议优先把SSH作为主要远程管理协议。Telnet作为低版本设备兼容或内网临时调试的补充方案,而不是主力。你可以把两种模式都配置好,SSH用AAA实现认证,Telnet只作为紧急Bypass通道并且加严ACL。这样即便SSH服务出问题,还能有一条备用通道进设备。
这套配置方法不仅适用于华为路由器,在华为交换机上也基本一致,核心思路是相通的。项目管理上,我们可以把这两种模式看作远程登录这台设备的两个入口策略,入口不同,身份校验方式不同,对应的安全边界也不同。理解清楚这一点之后,不管是在现网维护还是投标方案评审中,都能快速回答客户关于“远程管理如何做权限控制”的疑问。
最后再补充一个冷门但很实用的小技巧:如果你经常要通过Telnet登录一批设备,且每台设备的密码不同,可以在PC端使用带会话保存功能的终端工具,把每台设备的登录密码单独管理,而不是把所有密码写在一个共享文档里。共享文档一旦泄露就是全军覆没,而终端工具的加密存储多少还能隔离一下风险。设备的账号密码管理,本身就是和登录认证模式同等重要的一件事。