SSH基本简介及连接交互过程
简介:
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基本简介及连接交互过程相关推荐
- 802.11协议帧格式、Wi-Fi连接交互过程、无线破解入门
转自: http://www.cnblogs.com/littlehann/p/3700357.html Linux黑客大曝光: 第8章 无线网络 无线网络安全攻防实战进阶 无线网络安全 黑客大曝光 ...
- SSH建立连接的过程
SSH建立连接的过程 1. 服务器建立公钥档: 每一次启动 sshd 服务时,该服务会主动去找 /etc/ssh/ssh_host* 的档案,若刚刚安装完ssh软件时,由于没有这些公钥档案,通 ...
- DHCP协议格式、DHCP服务搭建、DHCP协商交互过程入门学习
相关学习资料 http://www.rfc-editor.org/rfc/rfc2131.txt http://baike.baidu.com/view/7992.htm?fromtitle=DHCP ...
- 网络通讯原理简介以及演示通讯过程
OSI网络七层参考模型 这是7层网络参考模型 非实现层面的 TCP/IP协议实现 TCP/IP协议实现了七层网络模型 将展示层和会话层合并到了应用层 微信.QQ或tomcat进程都属于应用层 该层的常 ...
- HTTPS协议,SSL协议及完整交互过程
转自:https://blog.csdn.net/dfsaggsd/article/details/50910999 SSL 1. 安全套接字(Secure Socket Layer,S ...
- PPPoE协议交互过程
PPPoE协议交互过程 1.发现阶段(PPPoED:PPPoE Discovery) 1.1 PADI(PPPoE Active Discovery Initiation) 1.2 PADO(PPPo ...
- HTTP请求的过程与TCP连接的过程
HTTP请求的过程与TCP连接的过程 http请求的详细过程 HTTP是一个应用层的协议,在这个层的协议,是一种网络交互需要遵守的一种协议规范. 1.连接:当输入一个请求时,首先建立一个socket连 ...
- Janus源码分析(4)——信令交互过程
1. Janus插件交互流程 Janus中所有插件都遵循以下基本数据流程: 客户端发送create创建一个Janus会话: Janus回复success返回Janus会话句柄: 客户端发送attach ...
- 蓝牙学习笔记之建立蓝牙连接的过程
发送广播数据包的叫广播发起者(advertisers),在广播通道接收广播数据包但没意向连接广播发起设备的叫扫描者( scanners), 需要连接到另一个设备的设备叫做 initiators,它监听 ...
最新文章
- 《数学之美》第10章 PageRank--Google的民主表决网页排名技术
- java-mybatis环境搭建
- AI赌神超进化:德扑六人局击溃世界冠军,诈唬如神,每小时能赢1千刀 | Science...
- 设计模式实战 - 责任链模式
- NumPy 数组对象
- 学习C语言的理由-别问我为什么,会用C语言,就是NB
- python色标_在Python中用色标可视化移动速度
- 微机原理换行代码_微机原理课程设计——汇编输出杨辉三角
- 如何修改计算机mac,超简单的电脑mac地址查看和修改方法
- android rom签名服务器,【精选】android_ROM分解定制签名教程.pdf
- 软件著作权申请注意事项——常见问题[详细版,不断补充中]
- chrome浏览器如何设置黑色背景
- 笨方法学 python3怎么样_笨办法学python3日常问题解决
- 程序员教程-1章-计算机系统基础知识
- C/C++ error/exception throw: access violation reading location 0x....;
- 栈详解(顺序栈和链栈)
- 最全的SQL练习题(做完你就是高手)
- 八款知名MartingaleEA 策略的评价
- 交通灯keil程序加2位数码管_带数码管显示的十字路口交通灯控制 C 程序
- 斯坦福大学Tensorflow与深度学习实战课程