参考链接
SSH是一种协议标准,用于在网络主机之间进行加密的一种协议,其目的是 实现安全远程登录 以及其它安全网络服务
原理
SSH之所以能够保证安全,原因在于它采用了 公钥加密
基于口令的认证
只能通过 Client 端自己对公钥进行确认:输入密码
基于公钥认证
Client 将自己的公钥存放在 Server 上,追加在文件 authorized_keys 中
注意:Client 端的 publicKey 是 Client 手动 Copy 到 Server端的,SSH 建立连接过程中没有公钥的交换操作
Server 端接收到 Client 的连接请求后,会在 authorized_keys 中匹配到 Client 的公钥publicKey,并生成随机数 R,用 Client 的公钥对该随机数进行加密得到 pubKey®,然后将加密后信息发送给 Client
Client 端通过私钥进行解密得到随机数 R,然后对随机数 R 和本次会话的 SessionKey 利用 MD5 生成摘要Digest1,发送给 Server 端
Server 端会也会对 R 和 SessionKey 利用同样摘要算法生成 Digest2
Server 端会最后比较 Digest1 和 Digest2 是否相同,完成认证过程
SSH & HTTPS
不像HTTPS协议,SSH协议的公钥是没有证书中心(CA)公证的
也就是说,都是自己签发的( Publish key和 Private key 都是自己生成的)