免密登录原理

简谈免密登录原理

      早期的互联网通信,例如Telnet和非安全shell,都是采用明文进行传输,一旦被截获,内容就会暴露无遗。而SSH就是其上位的替代品。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为了互联网安全的一个基本解决方案,迅速在全世界获得推广。

ssh加密信息:

       Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。根据其定义,我们能够理解SSH最常见的用途就是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。

SSH的工作原理

       作为以安全性著称的协议,SSH是怎么实现的呢?我们首先想到的肯定是对数据进行加密,而SSH的加密方式主要有两种,一个是对称加密(密钥加密),另一个是非对称加密(公钥加密)。

        对称加密:所谓的对称加密就是客户端与服务器共用一套密钥进行数据的加解密,这样在传输时是安全可靠的,但是如何安全的保存密钥呢,在集群中,客户端的数量巨大,一旦任意一个客户端的密钥被窃取,那么整个系统的安全性也不复存在。为了解决这个问题,非对称加密应运而生。

        非对称加密:非对称加密中有两个密钥:公钥和私钥。公钥由私钥产生,但却无法推算出私钥;数据使用公钥加密之后,只能使用私钥进行解密,而私钥被破解的概率很低很低,在非对称加密中,由于只有公钥会被传输,而私钥是服务端本地保存,因此即便公钥被监听,也无法拿到原始密码,从而登录服务器。

SSH免密登录:

免密登录构建过程——

  1. Client端生成公钥与私钥。

  2. Client将公钥发送给Server,携带者Client的用户信息。

  3. Server接收到Client发送的数据后,创建一个Map,使用用户信息作为key,公钥作为value,将Client发送的数据写入到map。

免密登录验证过程——

  1. Client提交访问请求,其中携带着用户信息。

  2. Server接收到Client请求后,解析出用户信息。根据用户信息,从map中查找是否具有该key。若没有,则直接拒绝访问。若存在,则获取到该Client所对应的公钥。

  3. Server端生成一个随即字符串,先将这个字符串保留一份,然后再使用公钥对该字符串进行加密。

  4. Server将加密后的字符串发送给Client。

  5. (Client接收到Server发送的加密后的字符串,使用私钥对其进行解密)Client将解密后的字符串发送给Server。

  6. Server接收到Client解密后的字符串,然后再与自己曾保留的未加密的字符串进行对比。若相同,则允许访问;若不同,则拒绝访问。

ssh提供一种免密登录的方式:公钥登录。

实现免密登录:ssh-keygen是生成密钥的工具,执行完成后生成公钥和密钥,这两个文件会默认保存在~/.ssh/路径下。我们直接执行来生成密钥,所有的参数都可以为空,也就是一直回车确认。

 

posted @ 2021-01-11 11:26  bsddssy  阅读(906)  评论(0)    收藏  举报