第49篇:Telnet 与 SSH——远程管理的安全之选
一、写在前面
网络设备部署后,工程师不可能每次都跑到机房接 Console 线去管理。远程管理是必不可少的——在办公室就能登录交换机、路由器做配置和排障。
远程登录网络设备最常用的两种协议是 Telnet 和 SSH。
一句话:Telnet 是明文传输(不安全),SSH 是加密传输(安全)。SSH 已经全面替代 Telnet。
二、Telnet
2.1 特点
| 特性 | 说明 |
|---|---|
| 传输层 | TCP |
| 端口 | 23 |
| 加密 | 无(全部明文) |
| 认证 | 用户名 + 密码(明文传输) |
| 使用 | 简单,仅需用户名密码 |
2.2 Telnet 的安全风险
# 想象一下:你在办公室 Telnet 登录核心交换机做配置
# 如果有人在你和交换机之间的链路上抓包
# 抓包结果:
TCP 192.168.1.100:23 → 192.168.1.1:1045
# 明文看到的内容:
admin ← 用户名
Admin@123 ← 密码
system-view ← 你做的每条配置
display current-configuration ← 看到了完整的配置内容
任何人都可以通过抓包获取你的设备管理密码!
2.3 Telnet 配置
[Switch] telnet server enable ← 开启 Telnet 服务
[Switch] user-interface vty 0 4 ← 进入 VTY 用户界面(5 个会话)
[Switch-ui-vty0-4] authentication-mode aaa ← 使用 AAA 认证
[Switch-ui-vty0-4] protocol inbound telnet ← 允许 Telnet 协议
[Switch-ui-vty0-4] user privilege level 15 ← 登录后进入特权模式
[Switch-ui-vty0-4] quit
[Switch] aaa
[Switch-aaa] local-user admin password cipher Admin@123
[Switch-aaa] local-user admin privilege level 15
[Switch-aaa] local-user admin service-type telnet
[Switch-aaa] quit
三、SSH(Secure Shell)
3.1 特点
| 特性 | 说明 |
|---|---|
| 传输层 | TCP |
| 端口 | 22 |
| 加密 | ✅ 全程加密 |
| 认证 | 密码 + 公钥认证(推荐) |
| 版本 | SSHv1(已淘汰)/ SSHv2(推荐) |
| 功能 | 远程 shell + 文件传输(SFTP/SCP) |
3.2 SSH 连接过程
SSH 客户端 SSH 服务器(交换机)
│ │
│ 1. TCP 三次握手(端口 22) │
│──────────────────────────────>│
│<──────────────────────────────│
│ │
│ 2. 版本协商 │
│ "我支持 SSHv2" │
│──────────────────────────────>│
│ "我也支持 SSHv2" │
│<──────────────────────────────│
│ │
│ 3. 密钥交换(DH 算法) │
│ 生成会话密钥 │
│──────────────────────────────>│
│<──────────────────────────────│
│ │
│ 4. 服务器公钥验证 │
│ 客户端确认服务器身份 │
│ │
│ 5. 用户认证(密码/公钥) │
│──────────────────────────────>│
│<──────── 认证成功 ────────────│
│ │
│ 6. 后续所有通信加密 │
│ "system-view" ← 加密传输 │
│ "display config" ← 加密传输 │
3.3 SSH 配置
[Switch] stelnet server enable ← 开启 SSH 服务
# 生成 RSA 密钥对(用于加密)
[Switch] rsa local-key-pair create
The key name will be: Switch_Host
The range of public key size is 512 ~ 2048.
Input the bits in the modules [default = 2048]: 2048
Generating keys...
........++++++
........++++++
# 创建 SSH 用户
[Switch] aaa
[Switch-aaa] local-user sshadmin password cipher Ssh@Admin123
[Switch-aaa] local-user sshadmin privilege level 15
[Switch-aaa] local-user sshadmin service-type ssh
[Switch-aaa] quit
# 配置 VTY 接口
[Switch] user-interface vty 0 4
[Switch-ui-vty0-4] authentication-mode aaa
[Switch-ui-vty0-4] protocol inbound ssh ← 只允许 SSH(禁止 Telnet)
[Switch-ui-vty0-4] user privilege level 15
[Switch-ui-vty0-4] quit
# 配置 SSH 用户认证方式
[Switch] ssh user sshadmin authentication-type password
3.4 SSH 客户端连接
# Windows(PowerShell 或 CMD)
C:\> ssh sshadmin@192.168.1.1
# Linux / macOS
$ ssh sshadmin@192.168.1.1
# 首次连接,会提示确认服务器公钥指纹
The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.
RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting? yes
Warning: Permanently added '192.168.1.1' (RSA) to the list of known hosts.
sshadmin@192.168.1.1's password: ************
<Switch> ← 登录成功
四、SSH 公钥认证(更安全的方式)
不需要输入密码,用密钥对认证:
# 1. 在 PC 上生成密钥对
C:\> ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\admin/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Your identification has been saved in id_rsa ← 私钥(自己保存)
Your public key has been saved in id_rsa.pub ← 公钥(上传到设备)
# 2. 将公钥导入交换机
[Switch] rsa peer-public-key admin-key
Enter "RSA public key" view, return the last key is returned.
[Switch-rsa-public-key] public-key-code begin
[Switch-rsa-public-key-key-code] 粘贴公钥内容(拷贝 id_rsa.pub 的内容)
[Switch-rsa-public-key-key-code] public-key-code end
[Switch-rsa-public-key] peer-public-key end
# 3. 创建 SSH 用户并绑定公钥
[Switch] aaa
[Switch-aaa] local-user sshadmin privilege level 15
[Switch-aaa] local-user sshadmin service-type ssh
[Switch-aaa] quit
[Switch] ssh user sshadmin authentication-type rsa
[Switch] ssh user sshadmin rsa public-key admin-key
五、SSH vs Telnet 对比
| 对比项 | Telnet | SSH |
|---|---|---|
| 协议端口 | TCP 23 | TCP 22 |
| 传输加密 | ❌ 明文 | ✅ AES/3DES 等加密 |
| 密码保护 | ❌ 明文传密码 | ✅ 加密传输 |
| 配置内容保护 | ❌ 明文 | ✅ 加密 |
| 公钥认证 | ❌ | ✅ 支持 |
| 文件传输 | ❌ 无 | ✅ SFTP/SCP |
| 配置复杂度 | 简单 | 稍复杂 |
| 兼容性 | 所有设备 | 现代设备全支持 |
| 生产环境推荐 | ❌ 不推荐 | ✅ 必须用 |
六、安全加固
# 1. 关闭 Telnet
[Switch] undo telnet server enable
# 2. VTY 只允许 SSH
[Switch] user-interface vty 0 4
[Switch-ui-vty0-4] protocol inbound ssh
# 3. SSH 仅使用 v2
[Switch] ssh server version 2
# 4. 限制 SSH 登录的源 IP
[Switch] acl 2000
[Switch-acl-basic-2000] rule 5 permit source 192.168.100.0 0.0.0.255
[Switch-acl-basic-2000] quit
[Switch] user-interface vty 0 4
[Switch-ui-vty0-4] acl 2000 inbound ← 只允许运维网段登录
# 5. 设置超时自动登出
[Switch] user-interface vty 0 4
[Switch-ui-vty0-4] idle-timeout 10 ← 10 分钟无操作自动断开
# 6. 最大失败尝试次数
[Switch] ssh server failed-times 3 ← 3 次失败断开连接
七、思考
- Telnet 和 SSH 最核心的区别是什么?
- 为什么 Telnet 不安全?抓包可以看到什么敏感信息?
- SSH 连接过程有哪几个阶段?哪个阶段确定了会话加密密钥?
- 配置 SSH 的第一步为什么要生成 RSA 密钥对?
- 写一个完整的安全 SSH 配置:只允许运维网段(192.168.100.0/24)SSH 登录,禁止 Telnet,超时 5 分钟。
- SSH 公钥认证比密码认证好在哪?什么场景适合用公钥认证?
下篇预告:第50篇《Console线连接与设备初始化配置》——掌握Console线连接和设备初始化配置的完整操作。