第49篇:Telnet 与 SSH——远程管理的安全之选

一、写在前面

网络设备部署后,工程师不可能每次都跑到机房接 Console 线去管理。远程管理是必不可少的——在办公室就能登录交换机、路由器做配置和排障。

远程登录网络设备最常用的两种协议是 TelnetSSH

一句话: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 次失败断开连接

七、思考

  1. Telnet 和 SSH 最核心的区别是什么?
  2. 为什么 Telnet 不安全?抓包可以看到什么敏感信息?
  3. SSH 连接过程有哪几个阶段?哪个阶段确定了会话加密密钥?
  4. 配置 SSH 的第一步为什么要生成 RSA 密钥对?
  5. 写一个完整的安全 SSH 配置:只允许运维网段(192.168.100.0/24)SSH 登录,禁止 Telnet,超时 5 分钟。
  6. SSH 公钥认证比密码认证好在哪?什么场景适合用公钥认证?

下篇预告:第50篇《Console线连接与设备初始化配置》——掌握Console线连接和设备初始化配置的完整操作。