ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

锐捷交换机SSH配置实战:从准备到排障的完整指南

锐捷交换机SSH配置实战:从准备到排障的完整指南 最近在客户现场处理网络割接发现还有相当一部分机房里跑着Telnet方式的远程管理。安全扫描报告一出来Telnet直接标红SSH属于必改项。锐捷交换机在这类项目里出现频率很高配置SSH看起来不难但不同系统版本之间命令差异挺大首次配置遇到坑的概率也不低。这篇文章就是我基于锐捷真机环境梳理的一份完整配置记录从准备工作、命令细节到排障思路都有适合刚上手锐捷设备的朋友照着操作也适合老网工查漏补缺。1. 动手之前的基本功课SSH配置的前置条件SSH本身是个加密的远程管理协议替代Telnet的主要原因就是它不会在网络上明文传输密码和指令。在交换机上配置SSH设备内部实际要做三件事生成用于加密协商的主机密钥对、建立本地认证账号库、让VTY虚拟终端允许SSH协议接入。这三件事缺一不可。1.1 为什么要先规划好管理地址和账号交换机上开SSH第一步不是敲SSH命令而是确认这台设备有没有一个可达的管理IP地址。SSH连接的本质是TCP 22端口的通信交换机若没有IP地址或者管理地址网关不通后续一切配置都白搭。管理地址的规划有几个建议。第一尽量使用专门的管理VLAN而不是直接挂在业务VLAN上。业务VLAN里的广播流量大、异常报文多管理口混在里边容易增加延时排查问题也麻烦。第二管理地址建议手工指定不要依赖DHCP。所有远程管理设备都必须有一个固定地址否则下次设备重启IP变了SSH连接直接找不到目标。第三如果跨网段管理必须确认交换机上有默认路由或明细路由可达管理终端所在网段而且中间防火墙要放行TCP 22端口。账号规划同样重要。锐捷交换机本地账号的权限级别是0到1515为最高特权级别。建议单独创建一个专用的管理账号不要用默认的admin也不建议所有工程师共用一个账号。账号密码要符合复杂度要求包含大小写字母、数字和特殊字符长度不低于8位。现场见过很多设备用admin/123456这种默认组合安全扫描只需要一分钟就能猜出密码。1.2 软件版本常识与连接方式确认锐捷交换机不同系列、不同软件版本对SSH的支持方式有细微差异。配置前先登录设备查看版本信息命令是show version重点关注软件版本号和功能集。大多数较新的RGOS版本都原生支持SSH v2部分老版本或精简版固件可能不支持。确认版本时顺便确认管理地址是否已配置show ip interface brief如果输出中管理VLAN的接口地址是空的需要先进入VLAN接口配置IP。常见的管理VLAN是VLAN 1也有用户单独划分VLAN 10作为管理网段。初始配置必须通过Console线完成。把Console线连接到交换机Console口另一端接电脑使用SecureCRT、Xshell或系统自带的超级终端打开串口会话波特率通常为9600。连接Console后别急着敲命令先看设备是否已经存在旧配置。如果是新部署设备会有初始化向导如果是现网设备务必先执行show running-config看看当前配置避免误覆盖。2. 一步步在锐捷交换机上开启SSH进入配置模式后按照下面的顺序操作基本不会错。完整流程包括设备名设置、域名设置、RSA密钥生成、本地用户创建、VTY线路调整、SSH服务启用。每一步之间都有依赖关系比如不设置域名生成RSA密钥时有些版本会直接报错。2.1 配置设备名、域名与RSA密钥生成SSH需要交换机拥有一个主机密钥对这个密钥对用于SSH协商阶段的身份验证。锐捷交换机生成密钥对依赖设备名和域名二者组合成主机的FQDN标识。先配置设备名和域名enable configure terminal hostname SW-Core ip domain-name ruijie.local设备名按现场规范来通常体现机房位置、设备角色和编号。域名可以随意设置但必须存在锐捷某些版本在缺少域名时执行密钥生成命令会提示先设置域名。生成RSA密钥对是SSH配置中最关键的一步crypto key generate rsa modulus 2048执行后系统会提示生成密钥所需时间并询问是否继续输入y回车即可。密钥长度建议选2048位1024位虽然生成速度快但安全性在如今的环境中已经不够。部分锐捷版本还支持crypto key generate rsa general-keys modulus 2048这种带参数的写法实际命令取决于软件版本命令行敲问号即可查看帮助提示。密钥生成后建议执行show crypto key mypubkey rsa查看公钥信息确认密钥已成功生成。若输出为空说明密钥生成失败需要排查域名设置或设备内存状态。2.2 创建本地用户并设置VTY远程登录策略接下来创建用于SSH登录的本地账号username admin privilege 15 password 0 Admin123这段命令的意思是创建用户名为admin的本地账号权限级别15密码明文为Admin123。其中0表示明文存储还有7表示加密存储的选项。建议用7加密存储命令为username admin privilege 15 password 7 Admin123不过要特别提醒锐捷的7加密并非不可逆的强加密配置文件泄露同样有被解密的可能。真正保险的做法是把配置文件本身视为敏感文件管理而不是依赖密码字段的加密形式。创建账号后配置VTY线路。VTY就是虚拟终端线路交换机远程登录默认使用VTY 0到4共5个会话通道line vty 0 4 transport input ssh login localtransport input ssh表示该线路只允许SSH协议接入拒绝Telnet等其他协议。如果设备需要兼容老版本网管软件也可以写成transport input ssh telnet但既然要解决安全问题建议只保留SSH。login local使用本地账号数据库做认证前面创建的admin账号就在这里生效。2.3 启用SSH服务并固定SSH版本配置完VTY后启用SSH服务。锐捷不同版本的启用命令有区别常见的有两种enable service ssh-server或ip ssh server enable执行时如果提示命令不存在用ssh ?或ip ssh ?触发帮助菜单看看当前版本支持哪些关键字。启用后设置SSH协议版本和安全参数ip ssh version 2 ip ssh authentication-retries 3 ip ssh time-out 120ip ssh version 2强制使用SSH v2。SSH v1存在已知安全漏洞不建议在现网使用。ip ssh authentication-retries 3限制认证失败重试次数防止暴力破解。ip ssh time-out 120设置SSH会话建立阶段的超时时间为120秒超过时间没有完成认证就断开连接。以上配置完成后回到特权模式保存配置end write保存动作非常重要曾有工程师在设备上配完SSH没有保存设备重启后管理配置全部丢失只能跑现场接Console重新配。配置完成后顺手保存是个成本极低的好习惯。2.4 保存配置与基础验证保存配置后立即验证服务状态show ip ssh show ssh show tcp brief | include 22show ip ssh输出SSH服务是否启用、版本、认证重试次数等信息。show ssh显示当前活动的SSH会话。show tcp brief | include 22检查TCP 22端口是否处于监听状态。第一次在锐捷设备上配置SSH时建议不要马上断开Console保留一个console会话作为兜底通道。远程登录测试通过后再关闭或断开console连接。SSH配置涉及远程管理通道万一某个参数配错导致登录不了还有console兜底可以抢救这是我在现场总结出来的保命习惯。3. 从终端侧发起的SSH登录实测设备端配置完成后需要从PC端发起连接验证效果。这个验证环节比想象中容易出问题特别是密钥确认、认证方式选择、协议版本兼容这几个细节。3.1 PC端SSH客户端的选择SSH客户端的选择范围很大SecureCRT、Xshell、PuTTY是最常见的三款Windows 10以上版本自带的OpenSSH客户端也能用。工具选型方面SecureCRT老牌稳定很多设备厂商工程师习惯用它日志记录、按钮栏、脚本支持都很成熟。Xshell界面更现代多标签管理方便免费版对个人用户友好。PuTTY体积小、零安装适合临时使用但保存会话和密钥管理功能比较简陋。Windows自带的ssh命令适合快速验证缺点是配置管理能力弱连接参数全靠命令行。无论用哪个工具关键点在于会话协议的设置。新建会话时协议类型要选SSH而不是Telnet端口默认22主机名填写交换机管理IP地址。3.2 登录测试与常见返回信息解读发起连接后第一次连接会出现主机密钥确认提示询问是否接受该主机的指纹信息。锐捷交换机默认使用RSA密钥指纹呈现为以ssh-rsa开头的一串字符。这个提示的作用是防止中间人攻击相当于第一次认识这台设备时记录它的身份特征以后每次连接都会和这个指纹比对。接受密钥后进入用户名密码输入界面输入之前创建的admin账号和密码。认证成功后会进入用户模式此时如果需要特权模式执行enable并输入特权密码。如果之前配置的账号权限是15登录后直接就是特权模式无需额外的enable密码。登录过程中有几个常见返回信息需要留意Connection refused设备TCP 22端口没有监听服务未启用或配置未保存Connection closed by remote hostSSH版本协商失败或认证被设备主动断开No matching key exchange method found客户端支持的密钥交换算法与设备不匹配SSH protocol version 2 is required客户端尝试使用SSH v1连接被设备拒绝这些报错大多与设备端配置相关具体排查思路在第4章统一展开。3.3 安全加固限制SSH登录源、超时与重试次数SSH通道开启后安全加固不应该停在这里。设备暴露在网络上管理端口就是对所有人开放的入口限制谁能连进来同样重要。锐捷交换机可以通过ACL限制SSH登录源地址。先定义ACL允许特定的管理网段或管理主机访问再在VTY下调用ip access-list standard SSH-ACL permit host 192.168.1.100 permit 192.168.10.0 0.0.0.255 deny any然后在VTY线路下调用line vty 0 4 access-class SSH-ACL inaccess-class在VTY线路下生效后所有远程登录请求都会先经过ACL过滤不在允许列表里的源地址直接在TCP层被拒绝设备日志里甚至不会出现认证失败记录。这个配置对减少暴力破解和扫描有非常明显的效果。此外远程会话空闲超时也建议设置。VTY线路下执行exec-timeout 5 0表示会话空闲5分钟自动断开。运维人员经常连着设备后去忙别的事结果会话一直挂着等于设备在旁边给自己留了一扇敞开的门。设置空闲超时让不活跃的会话自动回收配合ip ssh time-out 120限制认证阶段超时两层防护配合起来更完整。还建议关闭不安全的Telnet。如果之前VTY中transport input还包含telnet修改为transport input ssh即可。若设备同时开启了Telnet服务还需要在全局模式下关闭no enable service telnet-server或no service telnetd具体命令以版本支持的帮助输出为准。4. 配置过程中的常见问题与排查方法SSH配置涉及设备端、网络链路、客户端三个环节任何一个环节有问题都会导致连接失败。这里整理了实际工作中遇到频率最高的几个问题及排查思路。4.1 SSH连接被拒绝设备提示Connection refused设备返回Connection refused说明TCP三次握手阶段就被拒绝目标端口没有服务在监听。优先检查以下三个方面。第一确认SSH服务已启用。执行show ip ssh查看服务状态如果显示SSH is disabled或类似提示回到全局模式重新执行enable service ssh-server或对应版本的正确命令然后再次验证。第二确认TCP 22端口在监听。执行show tcp brief | include 22如果没有监听输出说明服务虽然配了但没有真正启动。很多情况下是因为配置完成后没有保存设备宕机或重启后配置丢失服务自然无法运行。第三确认没有ACL挡住管理地址。部分现网设备在接口或VTY上配置了ACL管理终端的地址不在允许范围内TCP连接会被静默丢弃。此时从设备端检查ACL配置show access-lists查看管理终端IP是否在允许列表中。4.2 生成RSA密钥时报错或命令无法识别生成密钥提示% You need to set DNS domain first是因为没有配置域名补上ip domain-name ruijie.local然后重新执行crypto key generate rsa modulus 2048。如果提示命令无法识别大概率是软件版本不支持这条命令。不同系列的RGOS版本命令集有差异老版本可能使用crypto key generate rsa也可能使用其他关键字。此时输入crypto key generate ?查看帮助或者搜索该版本的配置手册。还有一个办法执行show version查看版本号配合序列号联系售后确认正确命令集。4.3 密码正确却无法登录账号密码输入无误但一直提示认证失败这类问题排查点主要在VTY线路配置和账号权限上。先确认VTY线路是否配置了login local。如果VTY下没有认证配置设备会只要求输入密码而不接受用户名或者直接拒绝登录。修改方式line vty 0 4 login local再确认账号是否存在且权限正确。执行show running-config | include username查看当前所有本地账号。如果账号权限不是15登录后进入的是用户模式执行特权命令会被拒绝。权限不足的提示是% Privilege level is not enough而不是认证失败。另外密码中的特殊字符在命令行中可能会被解析器误处理。比如密码包含$或!等字符配置时需要用引号包裹或选择不含特殊字符的密码。4.4 SecureCRT登录交换机提示密钥不匹配SecureCRT连接时弹出主机密钥不匹配的警告通常是因为设备侧的主机密钥变更了而客户端本地缓存了旧的密钥记录。设备侧密钥变更的原因有很多设备重置后重新生成密钥、有人在另一台设备上导入导出过密钥、SFTP或配置恢复操作覆盖了密钥信息。处理方法是清除客户端缓存的主机密钥。SecureCRT中在会话选项中进入SSH2配置页点击Host key区域的删除按钮将该设备对应的旧密钥移除。Xshell中则是在工具菜单的主机密钥管理器中删除对应条目。删除后重新连接客户端会再次提示确认新密钥接受即可。设备侧也可以重新生成密钥后再连接crypto key zeroize rsa crypto key generate rsa modulus 2048crypto key zeroize rsa会清除现有RSA密钥之后重新生成。这个操作会让所有基于旧密钥建立的信任关系失效已在连接的会话也会中断需要提前知会相关人员。4.5 从Telnet切换到SSH后的兼容问题一些机房把Telnet换成SSH后发现部分终端或网管平台连不上设备了。这种问题通常是网管平台或老旧的运维脚本只支持SSH v1或弱加密算法而设备已经强制ip ssh version 2。解决思路不是降级设备的SSH版本而是升级客户端或调整SSH参数。新版锐捷系统支持自定义SSH加密算法可以通过ip ssh algorithm相关命令配置允许的算法集合。但一般情况下不建议在设备端放宽算法限制SSH v1和弱加密算法的存在本身就是安全隐患更推荐做法是让网管平台管理员升级组件的SSH版本。另外从Telnet切换到SSH后原有的批量脚本也需要同步修改。Telnet脚本通常采用明文expect交互方式SSH连接需要额外处理主机密钥指纹和加密通道脚本逻辑差异较大建议在测试环境验证后再上生产。4.6 配置保存与回滚的注意事项配置完成后没有保存是SSH排障过程中最容易遇到的人为因素。设备一重启所有配置回到内存中的初始状态SSH服务消失管理通道中断只能跑现场处理。遇到远程管理断连问题时优先检查设备是否重启过执行show version | include uptime或show clock比对设备运行时间和当前时间可以快速判断设备是否发生过重启。确认重启后从console连接重新配置并执行write保存。如果现场有配置备份习惯可以通过TFTP/FTP或USB恢复配置。恢复命令因版本而异常用的是copy tftp flash或copy usb flash。有一点需要注意恢复配置时如果配置文件里包含SSH主机密钥恢复后密钥不会变化如果配置里不包含密钥则需要重新生成RSA密钥对。配置回滚方面动手前先备份当前配置永远是值得做的事copy running-config tftp://192.168.1.100/running-config-backup.txt备份文件放在本地后即使后续配置出错也能快速恢复原状态。给核心设备做任何配置变更前都是这个原则。5. 写在最后的实战体会锐捷交换机配置SSH看起来只是一条命令的事实际涉及密钥生成、账号体系、VTY策略、ACL控制多个层面的协同。我自己的习惯是新设备或新版本第一次配置SSH时先把帮助命令跑一遍摸清当前系统支持的命令写法再动手配置。磨刀不误砍柴工这个习惯帮我少踩了不少版本差异的坑。还有一个建议是配置远程管理时永远给自己留一条后路。配置过程中保持Console连接不中断配置完成后在另一台机器上先做SSH登录验证验证通过后再断开Console。远程管理通道出问题时的现场扑救远没有准备好兜底方案时直接从console回滚来得从容。另外SSH配置完成后定期检查一下相关日志关注是否有异常的连接尝试。锐捷交换机的show logging可以查看安全日志如果发现大量来自陌生地址的认证失败记录说明这台设备已经被扫描工具盯上了。此时ACL限制登录源不是可选项而是必须项。设备管理通道的安全不只是SSH一个点但SSH是第一步也是最关键的一步。把这套配置吃透无论后续换到其他品牌设备核心思路都是通用的先建身份再开通道最后控权限三件事有序推进远程管理就不会出大问题。
RELATED READING

延伸阅读

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