本人目前在学习spark处理大数据应用方面的视频,其中正在理解spark处理hadoop生态形成的分布式存储数据库方面的知识:
众所周知, hadoop 以"分布式系统"这样的名头贯串整个Java生态体系.闲话不多说.熟悉搭建hadoop分布式框架的同学都很清楚ssh的作用,但是对于初学者来书,ssh似乎很神秘!更何况对没有接触过linux系统的同学而言.这篇文章就是想在学习hadoop的同时,对ssh的原理作本人认为更进一步的理解,同时能够熟练掌握ssh命令作的一些记录.
学习ssh之前,我尝试去百度搜索各种ssh通信方面的原理,有时候看着看着,自己都被一系列"解密"/"通信握手"给弄糊涂了.直到看到看到 https://www.cnblogs.com/kex1n/p/6017963.html?utm_source=itdadao&utm_medium=referral,算是基本了解,但是这篇文章在有个地方讲得比较隐晦,也就是在第四步骤:(serverA想免密码登录serverB的背景下)serverB在接收到serverA的请求链接时候随机生成密码的讲得过于草率,在这一点上,也会对ssh的生成"随机数字"与解密的方式产生一定程度的误解.本人认为,serverB依靠其自身搭建的ssh服务,对serverA发送过来的信息包(ip,用户名等),做了一层加密的方法,用以确认serverA的身份,然后根据过去正真打ServerA发过来的公钥,并利用rsa算法所产生的"随机值"作为serverA需要破解的字符或者信息,把"随机值"发送回serverA让其解密,最后serverB再次确认从serverA中获取到的所谓的被破解的"随机值"是否正确来完成了一轮沟通,这也是为什么要三次握手的由来.
说了这么多,本人尝试用生活中的最简单的一个例子来代表ssh通信的一般原理.
需要手动输入密码的登录行为
最最原始的一种登录系统的行为,每次都需要输入账号和密码,这好比开门一样,账户名就是那扇门,密码就好比一把钥匙,
这最好理解,每次进入家(系统),我都需要找到门(用户名)[这个用户我并不理解成家的主人,而是理解成门或者门牌号],并且要用指定的钥匙(密码)才能打开门(用户),进入自己的家.随着时间的流逝,技术的更新迭代,家里面为了提高防盗手段,在各个通道(端口),已经安装了足够强悍的防盗系统(防火墙),而且防盗系统越来越智能,各种人脸识别/手纹识别(数学密码及破解算法)技术日益兴起.那么有些懒人就开始思考了,为啥每次进家还要钥匙呀?这不多此一举吗?bingo,接下来就是讲解免密手段,也就是不用明面上不用带钥匙的一种方法,而是通过家的智能防盗系统(ssh解密方式)来自动识别
免密的登录行为
上图代表了基本打解密方式和方法.这里最重要打要属serverB在建立key的过程以及serverA破解的过程.这里就会涉及密码学中的各种技术,比如对称加密/非对称加密/hash加密等等方法,可见,方法可以参看
https://blog.csdn.net/clh604/article/details/22179907
由于本人才疏学浅,难免会有错误,希望大家指正!