最近想详细学习下ssh的原理,从网上查了不少资料,没有特别满意的,决定自己总结一篇,可能有不少谬误,希望大佬们指正,也希望有大佬能纷享些好的学习资料!
一、ssh是什么?
ssh提供了一种远程安全登陆的协议标准,以前的telnet是明文传输的,很不安全,win7就已经默认禁止了。
二、学习前需要知道什么?
1.对称加密和非对称加密
对称加密: 明文用key经过对称加密算法加密成密文,密文用key进过同样的对称加密算法可以得到明文。
非对称加密: 明文用公钥加密得到密文,密文用私钥解密得到明文,如RSA算法和DSA算法;
注意: 明文用私钥加密成密文,可以用公钥解密密文得到明文。签名就是用私钥去加密明文。
2.散列算法
例如MD5算法:单向的,可以把不定长的数据进行加密摘要,得到一个定长的摘要,并且无法通过摘要还原元数据。不同数据的摘要不相同。
三、ssh原理
我的图很大,你。。。
可以去我的百度云下载xmind原版
链接:https://pan.baidu.com/s/1_U3Txu4PBeTPXX0cxffOyA
提取码:hjd3
1.版本协商
2.算法协商
3.秘钥交换
这里生成的p1,p2,客户端的公钥私钥,服务器的公钥私钥就只是为了交换生成SessionKey,双方确定了SessionKey以后,那些数据就没用了。
4.用户认证
用户认证有两种,一种是口令认证,就是用户名/密码认证,不说了。
另一种是公钥认证,过程如下: