
SSH(Secure Shell),安全壳协议,作用和Telnet一样,用于远程控制和管理设备。1995年,芬兰赫尔辛基理工大学的研究员 Tatu 设计了该协议的第一个版本。目的是取代Telnet和FTP这些既不提供加强身份验证,也不能保证机密性的协议。并且选择了位于FTP21和Telnet23中间的22号端口,作为SSH的端口号使用。
SSH是目前远程管理各类网络设备(路由器、交换机、服务器)的首选协议,我觉得没有之一,在所有的场景下都应使用SSH。
在2006年SSH版本2发布,它引入了新的密钥交换机制,如使用了基于Diffie-Hellman算法的密钥交换,通过消息身份验证代码如 MD5 或 SHA 进行数据完整性检查,除此以外还添加了更强大的 AES高级加密算法。
实验环境

实验环境如图,采用GNS3,我添加了一台路由器和一台基于VirtualBox模拟器的Windows。
Windows设备用来模拟我们的个人计算机,IP地址为192.168.1.2/24,通过它来SSH路由器,实现远程访问管理的目的。
路由器e0/0接口的地址为192.168.1.1/24。
使用SSH协议的前提条件
在Cisco设备上启动SSH协议之前,必须要完成以下四个必要前提条件:
- 支持加密功能的 IOS 版本
- SSH 的核心是加密,因此,使用的IOS系统必须包含加密功能模块。在 Cisco 的命名规则中,通常带有k9标志的 IOS 版本才支持加密。例如,c1900-universalk9-mz.SPA.156-3.M.bin 就是一个支持加密的版本。如果你的 IOS 版本是基础版(如 ipbase),则可能不支持 SSH。
- 配置唯一的设备主机名 (Hostname)
- 在生成加密密钥时,Cisco IOS 会默认使用 “主机名”和“域名” 的格式来命名这套密钥。如果主机名是设备默认的名字(比如Router),IOS 会拒绝生成密钥,并提示我们先配置一个主机名。这是一种强制性的最佳实践,确保密钥的归属清晰。
- 并要注意,在我们管辖范围内,设备的主机名需要有唯一性,否则会造成一系列问题。
- 配置 IP 域名 (IP Domain Name):用于生成加密密钥。
- 必须为设备配置一个 IP 域名。这个域名不一定需要是公网上真实存在的,可以是内部使用的虚拟名称,如 cybersimon.local。
- Cisco 的 IOS 系统在设计上强制要求,RSA 密钥对必须与一个 “完全限定域名”(Fully Qualified Domain Name, FQDN)相关联。而这个 FQDN 正是由我们配置的 主机名 (Hostname) 和 IP 域名 (IP Domain Name) 拼接而成的。
- 生成加密密钥 (Crypto Key):为 SSH 会话提供加密支持。
- 这是最核心的一步。SSH 的安全性完全依赖于非对称加密,所以我们必须生成一个 RSA的密钥对,包括一个公钥和一个私钥。这个密钥对用于 SSH 会话的建立和数据加密使用。
SSH在Cisco设备上的配置方法
Router(config)#hostname R1 //设定唯一设备名
R1(config)#ip domain-name cybersimon.local //设定域名,注意在有些IOS版本中关键字为“domain name”没有中间的“-”
R1(config)#crypto key generate rsa //生成RSA加密密钥对
R1(config)#username XXX secret YYY //建立本地账户和密码
R1(config)#ip ssh version 2 //设定SSH版本2
R1(config)#line vty 0 4
R1(config-line)#login local //使用本地账户登录
R1(config-line)#transport input ssh //登录协议使用SSH接下来我们在Windows上打开putty软件,输入路由器的e0/0接口地址,并使用SSH协议。

如果我们信任此主机,点击Accept后会将将密钥添加到 PuTTY 的缓存中,并继续连接。
这个警报的核心作用是防止 “中间人攻击” (Man-in-the-Middle Attack),确保你正在连接的确实是你想要连接的那台服务器,而不是一个伪装的、恶意的第三方。

然后输入用户名和密码,验证成功后就可以登录设备了。

在我的课程中,包含更多详细内容。理论讲解、实验演示、命令文档等内容多维一体。助您一次通过Cisco认证考试!课程优惠券请点击这里