用一台电脑玩转eNSP双机SSH互访:模拟真实网络运维的完整实验
用一台电脑玩转eNSP双机SSH互访:模拟真实网络运维的完整实验
在单台PC上搭建完整的网络实验环境,是网络工程师和爱好者提升实操能力的高效方式。华为eNSP作为企业级网络仿真平台,能够完美模拟真实设备的配置场景,而SSH协议则是现代网络管理中不可或缺的安全远程登录工具。本文将带你从零开始,在eNSP环境中构建一个双路由器SSH互访的实验拓扑,不仅涵盖基础配置,更深入探讨首次连接认证、会话管理等进阶技巧,让你在安全的环境中掌握企业级网络运维的核心技能。
1. 实验环境准备与拓扑搭建
1.1 eNSP环境配置要点
在开始实验前,确保你的电脑已安装最新版eNSP(当前推荐v1.3.00.100),同时需要配套安装VirtualBox和Wireshark组件。以下是环境检查清单:
- 硬件要求:至少4GB内存,建议8GB以上
- 软件兼容性:关闭杀毒软件实时防护(避免虚拟网卡驱动冲突)
- 网络设置:确保主机防火墙允许eNSP相关进程通信
创建新工程时,建议采用以下命名规范:
[日期]_SSH_Lab_双机互访这种命名方式便于后续实验归档和版本管理。
1.2 双路由器拓扑设计
我们使用两台AR2220路由器构建最小实验环境:
[R1(SSH Client)] <---> [R2(SSH Server)]接口连接与IP规划表:
| 设备 | 接口 | IP地址 | 子网掩码 |
|---|---|---|---|
| R1 | GE 0/0/0 | 10.1.1.1 | 255.255.255.0 |
| R2 | GE 0/0/0 | 10.1.1.2 | 255.255.255.0 |
提示:在eNSP中拖拽设备时,先放置路由器再连接线缆,避免接口顺序混乱。连接完成后务必点击"启动所有设备"按钮,等待设备状态灯变绿再进行配置。
2. SSH Server端深度配置
2.1 基础网络参数设置
首先在R2上完成基础网络配置:
<R2>system-view [R2]sysname SSH_Server [SSH_Server]interface GigabitEthernet 0/0/0 [SSH_Server-GigabitEthernet0/0/0]ip address 10.1.1.2 24 [SSH_Server-GigabitEthernet0/0/0]undo shutdown [SSH_Server-GigabitEthernet0/0/0]quit验证连通性:
[SSH_Server]ping 10.1.1.1 PING 10.1.1.1: 56 data bytes, press CTRL_C to break Reply from 10.1.1.1: bytes=56 Sequence=1 ttl=255 time=50 ms2.2 安全认证体系构建
SSH的安全核心在于非对称加密和严格的用户认证,需要完成以下关键步骤:
- 生成RSA密钥对(推荐2048位):
[SSH_Server]rsa local-key-pair create The range of public key size is (512 ~ 2048). Input the bits in the modulus[default = 512]:2048 Generating keys... ..........++++++ ........................++++++- 配置VTY虚拟终端:
[SSH_Server]user-interface vty 0 4 [SSH_Server-ui-vty0-4]authentication-mode aaa [SSH_Server-ui-vty0-4]protocol inbound ssh [SSH_Server-ui-vty0-4]idle-timeout 15 0 # 设置15分钟超时 [SSH_Server-ui-vty0-4]quit- 创建AAA本地用户:
[SSH_Server]aaa [SSH_Server-aaa]local-user netadmin password cipher Admin@123 [SSH_Server-aaa]local-user netadmin service-type ssh [SSH_Server-aaa]local-user netadmin privilege level 15 [SSH_Server-aaa]quit- 关联SSH用户:
[SSH_Server]ssh user netadmin authentication-type password [SSH_Server]ssh authorization-type default aaa2.3 服务启用与验证
最后启用SSH服务并检查配置:
[SSH_Server]stelnet server enable [SSH_Server]display ssh server status SSH Version :2.0 SSH authentication timeout :60s SSH server key generating interval :0h SSH authentication retries :3注意:生产环境中建议定期更换密钥对,可通过
rsa local-key-pair create force命令强制重新生成。
3. SSH Client端高级配置
3.1 基础网络连通性测试
在R1上配置基础IP后,建议进行扩展连通性测试:
<R1>system-view [R1]sysname SSH_Client [SSH_Client]interface GigabitEthernet 0/0/0 [SSH_Client-GigabitEthernet0/0/0]ip address 10.1.1.1 24 [SSH_Client-GigabitEthernet0/0/0]undo shutdown # 扩展测试命令 [SSH_Client]ping -c 100 10.1.1.2 # 发送100个测试包 [SSH_Client]tracert 10.1.1.2 # 路径追踪3.2 首次连接认证处理
首次SSH连接需要特殊处理公钥认证:
[SSH_Client]ssh client first-time enable [SSH_Client]stelnet 10.1.1.2 Please input the username: netadmin Password: The server is not authenticated. Continue? [Y/N]:y Do you want to save the server public key? [Y/N]:y连接成功后,查看保存的公钥:
[SSH_Client]display ssh server public-key3.3 会话管理技巧
建立SSH连接后,实用的会话管理命令:
- 查看活跃会话:
<SSH_Client>display ssh server session- 会话保持配置(防止超时断开):
[SSH_Client]user-interface vty 0 4 [SSH_Client-ui-vty0-4]shell keepalive 10 # 每10秒发送keepalive包- 多会话并行管理:
<SSH_Client>screen-length 0 temporary # 禁用分页显示 <SSH_Client>display current-configuration | include ssh4. 企业级运维场景扩展
4.1 安全加固最佳实践
在实际企业环境中,建议实施以下安全措施:
- 密码策略强化:
[SSH_Server]aaa [SSH_Server-aaa]local-user netadmin password cipher Admin@2023! [SSH_Server-aaa]local-user netadmin password aging 90 # 90天强制改密 [SSH_Server-aaa]local-user netadmin failed-login-attempts 3 lock-time 5- 访问控制列表(ACL):
[SSH_Server]acl 2000 [SSH_Server-acl-basic-2000]rule permit source 10.1.1.1 0 [SSH_Server-acl-basic-2000]quit [SSH_Server]user-interface vty 0 4 [SSH_Server-ui-vty0-4]acl 2000 inbound- 日志监控配置:
[SSH_Server]info-center enable [SSH_Server]info-center loghost 10.1.1.100 # 假设日志服务器IP4.2 排错工具箱
当SSH连接出现问题时,按以下顺序排查:
- 基础连通性检查:
ping 10.1.1.2 display ip interface brief- 服务状态验证:
display ssh server status display rsa local-key-pair public- 用户权限诊断:
display aaa local-user netadmin display ssh user-information- 抓包分析(在eNSP中启动Wireshark):
# 过滤SSH流量 tcp.port == 224.3 自动化运维集成
对于需要频繁登录的场景,可以考虑以下自动化方案:
- Expect脚本示例(Linux环境):
#!/usr/bin/expect set timeout 30 spawn ssh netadmin@10.1.1.2 expect "password:" send "Admin@123\r" expect ">" send "display version\r" expect ">" send "quit\r"- Python自动化脚本(使用Paramiko库):
import paramiko client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect('10.1.1.2', username='netadmin', password='Admin@123') stdin, stdout, stderr = client.exec_command('display interface brief') print(stdout.read().decode()) client.close()