简介:

SSH(Secure+SHell):是一种网络协议,顾名思义,就是非常安全的shell,主要用于计算机间的加密传输。

SSH服务基于非对称加密(public-key cryptograthy,也称公开密钥加密)技术实现数据加密传输。该技术会生成一对密钥,一个对数据进行加密,而且只能用于加密,而另一个只能用于解密。使用加密密钥加密后的数据,只能用对应的解密密钥才能解密。而且只知道其中一个密钥,无法计算出另一个。因此,如果公开了一对密钥中的一个,并不会危害到另一个密钥。通常把公开的密钥称为公钥(public key),不公开的密钥称为私钥(private key)。

**如果公开的是解密密钥,该场景用于客户端验证持有私钥一方发布的数据或文件的完整性,准确性,以防数据被篡改。

**如果公开的是加密密钥,该场景用于客户给给私钥所有者上传数据,称为公开密钥加密。

当前,SSH主要采用RSA算法(协议V2默认算法)和DSA算法(协议V1仅支持该算法)来实现非对称加密技术。

SSH提供两种方式的登陆验证:

1>密码(口令)验证:以服务器中本地系统用户的登陆名称,密码进行验证。

2>密钥对验证:要求提供相匹配的密钥信息才能通过验证。通常先在客户机中创建一对密钥文件(公钥和私钥),将公钥文件放到服务器中的指定位置。

***当密码验证和密钥对验证都启用时,服务器将优先启用密钥对验证***

SSH协议的基本框架

SSH协议框架中最主要的部分是三个协议:传输层协议、用户认证协议和连接协议。同时,SSH协议框架中还为许多高层的网络安全应用协议提供扩展的支持.

传输层协议(The Transport Layer Protocol)提供服务器认证,数据机密性,信息完整性等的支持。用户认证协议(The User Authentication Protocol)为服务器提供客户端的身份鉴别。连接协议(The Connection Protocol)将加密的信息隧道复用成若干个逻辑隧道,提供给更高层的应用协议使用。各种高层应用协议可以相对的独立于SSH基本体系之外,并依靠这个基本框架,通过连接协议使用SSH的安全机制。

SSH连接及交互过程:

当服务端SSH服务正常运行后,客户端连接时,进行如下交互:

1,客户端向服务端发送连接请求。

###客户端通过SSH 工具连接服务端,相关信息通过明文发送。

2,服务端返回公钥信息。

###根据客户端所使用的服务协议版本及算法设置,返回相应公钥信息。比如,默认情况下,客户端通过SSH V2版协议,基于RSA算法建立连接,则服务器端将*/ras_key.pub文件中的内容返回客户端。相关信息通过明文发送。

3,客户端对服务端公钥进行比对和确认。

###客户端接受到服务端公钥信息后,会进行如下比对,并让用户对相关信息进行确认:

a,如果是首次连接服务端,客户端会收到如下信息,让用户确认公钥指纹(注释)的有效性:

The authenticity of host '192.168.0.1 (192.168.0.1)' can't be established.RSA key fingerprint is c2:49:d9:43:74:d5:ed:bc:28:9b:d2:7b:63:94:cf:bc.

Are you sure you want to continue connecting (yes/no)?

**如果输入no,则连接中断并报错(Host key verification failed

)。

**如果输入yes,则会将相应的公钥信息保存到当前用户家目录下.ssh目录内的known_hosts文件中。

b,如果之前已经成功连接,而且公钥指纹比对一致,则会继续进行下一步操作。

c,如果服务端因重装系统等因素导致公钥指纹发生变化,则会直接导致连接失败(报错Host key verification failed),则需要删除已保存的条目后再重新连接。

4,客户端生成临时密钥对。

###服务端公钥校验及确认后,客户端会生成一对临时密钥用于客户端加密。该密钥对不会存储到文件,而是记录在内存中。每次连接都会生成临时密钥对。

5,客户端发送公钥信息。

###客户端向服务端发送前述生成的临时密钥对中的公钥信息。相关信息通过明文发送。

至此,服务端及客户端都拥有对方的公钥和自身的私钥,所以称为非对称加密。

公钥指纹:

由于公钥一般较长(采用RSA算法 时长达1024位),所以为了方便起见,通过对其MD5计算,生成一个128位的字符串用于信息比对。此称为公钥指纹。

后续登陆校验及正常的数据传输,都会通过双向加密方式进行:

a,如果服务端需要发送数据给客户端:

->服务端使用所持有的客户端公钥,对需要传输的数据进行加密再发送给客户端。

->客户端收到信息后,使用所持有的自身私钥解密后获得数据。

b,如果客户端需要发送数据给服务端:

同上流程,身份互换。

转载于:https://blog.51cto.com/11954248/1874762

SSH基本简介及连接交互过程相关推荐

  1. 802.11协议帧格式、Wi-Fi连接交互过程、无线破解入门

    转自: http://www.cnblogs.com/littlehann/p/3700357.html Linux黑客大曝光: 第8章 无线网络 无线网络安全攻防实战进阶 无线网络安全 黑客大曝光 ...

  2. SSH建立连接的过程

    SSH建立连接的过程 1.     服务器建立公钥档: 每一次启动 sshd 服务时,该服务会主动去找 /etc/ssh/ssh_host* 的档案,若刚刚安装完ssh软件时,由于没有这些公钥档案,通 ...

  3. DHCP协议格式、DHCP服务搭建、DHCP协商交互过程入门学习

    相关学习资料 http://www.rfc-editor.org/rfc/rfc2131.txt http://baike.baidu.com/view/7992.htm?fromtitle=DHCP ...

  4. 网络通讯原理简介以及演示通讯过程

    OSI网络七层参考模型 这是7层网络参考模型 非实现层面的 TCP/IP协议实现 TCP/IP协议实现了七层网络模型 将展示层和会话层合并到了应用层 微信.QQ或tomcat进程都属于应用层 该层的常 ...

  5. HTTPS协议,SSL协议及完整交互过程

    转自:https://blog.csdn.net/dfsaggsd/article/details/50910999 SSL 1.        安全套接字(Secure Socket Layer,S ...

  6. PPPoE协议交互过程

    PPPoE协议交互过程 1.发现阶段(PPPoED:PPPoE Discovery) 1.1 PADI(PPPoE Active Discovery Initiation) 1.2 PADO(PPPo ...

  7. HTTP请求的过程与TCP连接的过程

    HTTP请求的过程与TCP连接的过程 http请求的详细过程 HTTP是一个应用层的协议,在这个层的协议,是一种网络交互需要遵守的一种协议规范. 1.连接:当输入一个请求时,首先建立一个socket连 ...

  8. Janus源码分析(4)——信令交互过程

    1. Janus插件交互流程 Janus中所有插件都遵循以下基本数据流程: 客户端发送create创建一个Janus会话: Janus回复success返回Janus会话句柄: 客户端发送attach ...

  9. 蓝牙学习笔记之建立蓝牙连接的过程

    发送广播数据包的叫广播发起者(advertisers),在广播通道接收广播数据包但没意向连接广播发起设备的叫扫描者( scanners), 需要连接到另一个设备的设备叫做 initiators,它监听 ...

最新文章

  1. 《数学之美》第10章 PageRank--Google的民主表决网页排名技术
  2. java-mybatis环境搭建
  3. AI赌神超进化:德扑六人局击溃世界冠军,诈唬如神,每小时能赢1千刀 | Science...
  4. 设计模式实战 - 责任链模式
  5. NumPy 数组对象
  6. 学习C语言的理由-别问我为什么,会用C语言,就是NB
  7. python色标_在Python中用色标可视化移动速度
  8. 微机原理换行代码_微机原理课程设计——汇编输出杨辉三角
  9. 如何修改计算机mac,超简单的电脑mac地址查看和修改方法
  10. android rom签名服务器,【精选】android_ROM分解定制签名教程.pdf
  11. 软件著作权申请注意事项——常见问题[详细版,不断补充中]
  12. chrome浏览器如何设置黑色背景
  13. 笨方法学 python3怎么样_笨办法学python3日常问题解决
  14. 程序员教程-1章-计算机系统基础知识
  15. C/C++ error/exception throw: access violation reading location 0x....;
  16. 栈详解(顺序栈和链栈)
  17. 最全的SQL练习题(做完你就是高手)
  18. 八款知名MartingaleEA 策略的评价
  19. 交通灯keil程序加2位数码管_带数码管显示的十字路口交通灯控制 C 程序
  20. 斯坦福大学Tensorflow与深度学习实战课程

热门文章

  1. 【VMCloud云平台】SCCM(三)初始配置
  2. oracle 11g使用deferred_segment_creation 延迟段创建特性时遇到的问题总结
  3. Weblogic远程调试
  4. 谈谈现在的状况,顺便给以后找工作的和我一样的毕业生说说
  5. 自定义定时器的一点总结
  6. OX Pattern
  7. Java 理论与实践: 非阻塞算法简介
  8. byte[]数组下标的最大值
  9. 大学学习方法介绍之:使用两套教材
  10. C#与Excel互操作