名词解释:
【ssh】ssh即Secure Shell 的缩写,是一种与telnet相似的协议,不同的是ssh在信息传输过程中对数据进行了加密。
【密钥】密钥是数据传递时进行加密的一种方式,分为对称密钥和非对称密钥,对称密钥其加密过程和解密过程使用的是同一段密文,非对称密钥分为公钥(加密)和私钥(解密)两段密文。
【对称密钥】最常见的对称密钥就是电视里常用的“书本加密法”,即A和B同时持有一本书,A将要传递的字用书的页码、行数、列数等数字表示,B得到这些数字后,使用同一本书就能将这些信息反向推导出来。计算机进行加密时也参考这样的方式,用户在尝试连接设备时设备向用户发送一本“转换字典”,用户的客户端会根据转换字典将用户指令加密生成密文,而后通过网络传递给设备,设备得到密文后又根据转换字典将密文解密成指令,设备端到客户端的信息传递也是一样的过程。对称密钥的问题在于若有足够多的时间,转换字典还是有可能被破解。
【非对称密钥】非对称密钥是相对于对称密钥而言的,基本原理与对称密钥相似,不同的是非对称密钥存在两本书,分别为公钥和私钥。比喻来讲,A和B分别持有两本书A和B,A将要传递的字用书A进行加密,B若使用书B则可以对信息进行正确解密,B若使用书A反而解密不了信息。在应用场景中,用户在尝试连接设备时,设备向用户的客户端发送一个公钥,在设备内保存一个私钥。用户在发送数据前,客户端会先将信息用公钥加密,传递给设备后,设备再使用私钥进行解密。设备在向用户发送信息时,先将信息用私钥进行加密,而后客户端使用公钥对其进行解密。使用这种方式加密的信息在理论上也有可能被破解,但其时间成本和需要的计算资源是一个天文数字,即在事实上是基本没有可操作性的。
【RSA】RSA是非对称密钥的一种算法,由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的,这个算法取了这三个人名字的首字母。
一 ssh的意义
用户使用telnet与设备进行交互时,存在两个问题,一是数据在网络上是以明文方式传输的,接入到网络中的任何人都可以使用抓包软件将这些信息截获。二是无法对设备的真实性进行检查,别有用心的人可以在网络上伪装一个目标设备将用户的指令截获。ssh正是用以解决这两个问题,使用ssh进行数据传输时数据是加密的,若有需要还可以在目标设备上放置一个加密的口令用以识别设备的真实性。
二 ssh在传输数据时如何加密
ssh的应用环境一般存在两个角色,一是用户的客户端,二是目标设备。用户使用客户端尝试连接目标设备时,设备上的ssh server会生成一个公钥和一个私钥,设备先将公钥交给客户端保存,用户在发送信息给设备时,客户端先使用公钥将信息加密,设备得到加密的信息后使用私钥将密文解密得到用户发送的真实信息。信息在网络中传递的整个过程都进行了加密,使得网络中其他人即使截获了这些信息也无法识别出其真实含义。
三 ssh是如何保证目标设备是真实的
用户在与设备建立连接前,先在自己的电脑上使用工具生成一个公钥A和一个私钥A,用户先将这个公钥A保存到设备中并与某个用户名绑定,将私钥A保存到客户端。在建立连接时,设备向客户端发送一个公钥B,用户输入用户名后客户端将用户名用公钥B加密并发送给设备,设备用私钥B将用户名解密,并查询此用户名是否绑定了公钥A,若绑定了,则将公钥A发送给客户端,客户端使用私钥A将公钥A进行解密,若能解密则表明用户当前连接的设备就是一台指定的设备,则验证通过。注意公钥A在传递过程中也是使用设备产生的秘钥进行加密和解密的。这个过程的本质就是用户在设备上预先就保存了一个特定的口令,在连接建立时对这个口令进行校验,若验证通过则让用户可以直接登录设备,而不需要密码。
四 ssh配置为用户名加密码认证
1.创建一个test用户
2.将用户test配置为用户名加密码认证(默认)
[AR]ssh user test authentication-type password
3.使能设备的ssh功能
[AR]stelnet server enable //开启ssh功能 [AR]rsalocal-key-pair create //生成一个新的秘钥对
五 ssh配置为RSA认证
在华为交换机中,RSA认证即前面“三”中讲到的使用预先创建的密钥对用户和设备进行检验。
1.使用软件puttygen生成一个密钥对public.pub和private.ppk
2.将私钥导入到用户的客户端软件
3.使用sshkey将public.pub解析成设备可以识别的公钥(一串字符)
4.将公钥导入到设备
[AR]rsa peer-public-key test1-key //创建一个公钥test1-key [AR-rsa-public-key]public-key-code begin //开始字符的黏贴 [AR-rsa-key-code] //粘贴上面前面的公钥(一串字符) [AR-rsa-key-code]public-key-code end //结束字符的黏贴 [AR-rsa-public-key]peer-public-key end //退出公钥的创建
5.创建一个test1用户
6.配置用户test1
[AR]ssh user test1 authentication-type rsa //test1用户配置为RSA认证 [AR]ssh user test1 assign rsa-key test1-key //指定其公钥为前面创建的test1-key
7.使能设备的ssh功能
[AR]stelnet server enable //开启ssh功能