https://www.jianshu.com/p/0473f269f4a6

结合如下看,有评论说下面的总结可能有问题,可能总结反了,总结的流程原理是有参考意义的

SSH公钥登录(私钥认证)原理

https://blog.csdn.net/csm201314/article/details/78453579

在平时工作中我们经常要远程登录服务器,这就要用到SSH协议:

$ ssh user@host

主要有两种登录方式:第一种为密码口令登录,第二种为公钥登录

密码口令登录

  通过密码进行登录,主要流程为:

    1、客户端连接上服务器之后,服务器把自己的公钥传给客户端

    2、客户端输入服务器密码通过公钥加密之后传给服务器

    3、服务器根据自己的私钥解密登录密码,如果正确那么就让客户端登录

公钥登录

  公钥登录是为了解决每次登录服务器都要输入密码的问题,流行使用RSA加密方案,主要流程包含:

    1、客户端生成RSA公钥和私钥

    2、客户端将自己的公钥存放到服务器

    3、客户端请求连接服务器,服务器将一个随机字符串发送给客户端

    4、客户端根据自己的私钥加密这个随机字符串之后再发送给服务器

    5、服务器接受到加密后的字符串之后用公钥解密,如果正确就让客户端登录,否则拒绝。这样就不用使用密码了。

下面主要说说RSA

  先介绍两个概念:

    对称加密:对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。对称加密通常使用的是相对较小的密钥,一般小于256 bit。因为密钥越大,加密越强,但加密与解密的过程越慢。如果你只用1 bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解;但如果你的密钥有1 MB大,黑客们可能永远也无法破解,但加密和解密的过程要花费很长的时间。密钥的大小既要照顾到安全性,也要照顾到效率。对称加密的一大缺点是密钥的管理与分配,换句话说,如何把密钥发送到需要解密你的消息的人的手里是一个问题。在发送密钥的过程中,密钥有很大的风险会被黑客们拦截。现实中通常的做法是将对称加密的密钥进行非对称加密,然后传送给需要它的人。

    非对称加密:非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人–银行才能对你的消息解密。与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。目前最常用的非对称加密算法是RSA算法。虽然非对称加密很安全,但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。

公钥和私钥:

1、 一个公钥对应一个私钥。

2、密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。

3、如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。

4、如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。

RSA算法的作用:
1、加密:公钥加密私钥解密

主要用于将数据资料加密不被其他人非法获取,保证数据安全性。使用公钥将数据资料加密,只有私钥可以解密。即使密文在网络上被第三方获取由于没有私钥则无法解密。从而保证数据安全性。

A在自己电脑上生成RSA钥匙文件,一个私钥文件一个公钥文件,并将他的公钥传送给B。
此时B要传送信息给A,于是B用A的公钥加密他的消息,然后传送给A。【网络上传输的密文,没有A的私钥无法解密,其他人获取之后也没用】
A用他的私钥解密B的消息。
2、认证:私钥加密公钥解密

主要用于身份验证,判断某个身份的真实性。使用私钥加密之后,用对应的公钥解密从而验证身份真实性。

  A要验证B是否是真实用户

1、B将自己公钥给A

2、B将文件用自己私钥加密传送给A

3、A根据B的公钥解密,如果成功则为真实身份用户

SSH公钥登录则用的是第二种功能。

安全性: 这种算法非常可靠,密钥越长,它就越难破解。根据已经披露的文献,目前被破解的最长RSA密钥是768个二进制位。也就是说,长度超过768位的密钥,还无法破解(至少没人公开宣布)。因此可以认为,1024位的RSA密钥基本安全,2048位的密钥极其安全。所以我们在用ssh-keygen命令时候要注意密钥长度,具体参数为:

-b bits
指定密钥长度。对于RSA密钥,最小要求768位,默认是2048位。DSA密钥必须恰好是1024位(FIPS 186-2 标准的要求)。

总结:

公钥与私钥使用场景:  

(1)私钥用来进行解密和签名,是给自己用的。

(2)公钥由本人公开,用于加密和验证签名,是给别人用的。

(3)当该用户发送文件时,用私钥签名,别人用他给的公钥验证签名,可以保证该信息是由他发送的。当该用户接受文件时,别人用他的公钥加密,他用私钥解密,可以保证该信息只能由他接收到。

原文链接:https://blog.csdn.net/csm201314/article/details/78453579

简书 SSH 登录流程分析相关推荐

  1. WireShark抓包获取简书的登录密码

    现在某些网站在用户登录的过程中都是使用明文来传输用户密码的,这就使得用户密码完全暴露在网络中.通过抓包工具就很容易抓取密码.这里就以抓取简书的登录密码为例来介绍下抓包的过程. 1. 下载工具 抓包工具 ...

  2. 使用Chakra-UI封装简书的登录页面组件(React)

    要求:使用chakra ui和react 框架将简书的登录页面的表单封装成独立的可重用的组件 使用到的API: 注册API 请求方式:POST 请求地址: https://conduit.produc ...

  3. Linux查看当前ssh登录数,linux /centos 查看ssh登陆日志,从SSH登录情况分析服务器安全...

    1.wtmp日志 SSH下直接执行命令 即可查看所有SSH登陆日志 包括IPlastlast -x -F 2.查看在线用户情况 (1)w 命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令. ...

  4. iOS实现简书的登录验证方式(极验验证)

    开篇 我们登录简书的时候就会看到如下类似的验证方式,个人还是很喜欢这种验证方式的,想着如果把它自如自己设计的软件中还是不错的,但是我们要怎么实现这种验证效果呢,今天就来介绍一下. 图形验证码.gif ...

  5. App Store里“简书”app的评价分析

    我想通过App Store去了解app的信息,清一色的好评怎么回事?在淘宝买水军刷榜了吧.一水的同样文笔的评论真的是够了,一共5.78万的评论,看看这分布,95%的都是4星和5星,迷了迷了.下载简书, ...

  6. Ultimate Member插件注册登录流程分析

    Ultimate Member 是一个强大而灵活的WordPress插件,可以让用户在前台注册.登录.编辑个人资料等.该插件可以让你添加漂亮的用户个人资料到你的网站中,快速创建一个先进的社区. 本文我 ...

  7. 学习淘淘商城第八十七课(单点登录用户登录流程分析及用户登录Service层)

    我们先来看下登录流程图,如下图所示. 用户登录涉及到三个部分,第一部分是淘淘商城前台工程,第二部分是单点登录服务,第三部分是Redis服务.具体流程下图已经说的很明白了,我就不再啰嗦一遍了,相比于传统 ...

  8. 16 OAuth2登录流程分析

    上文已经简单说过,OAuth2登录的基本实现原理是:Client获取用户授权,得到令牌,通过令牌,获取用户信息(资源).再在本地构建用户登录认证信息,维持用户会话状态,以此达到登录的目的. 下文便从源 ...

  9. 幼麟棋牌登录流程分析

    1.默认开机进入的是startScene,加载了AppStart脚本,其中有一个非常重要的方法,初始化了游戏内用到的所有管理器,另外还请求了服务器的版本信息(次要) function initMgr( ...

最新文章

  1. 【bzoj 4764】弹飞大爷
  2. Linux驱动编程 step-by-step (六) 用户地址检测 简单模块调试 以及一些杂项
  3. Nginx反向代理之proxy_set_header指令
  4. lua52 C API测试代码
  5. 西南大学0039c语言作业答案,2017年6月西南大学继续教育学院C语言0039大作业答案...
  6. 最通俗易懂的YOLOv3原理及代码解析
  7. 【clickhouse】clickhouse 漫谈SIMD、SSE指令集与ClickHouse向量化执行
  8. OpenGL ES之GLSurfaceView学习一:介绍
  9. mysql+sqlplus命令找不到_oracle sqlplus命令报command not found
  10. win7网络适配器_win7网络重置
  11. 单相Boost功率因数校正电路(PFC)设计与仿真(Simulink Saber):第二章 仿真模型搭建与控制参数整定
  12. Gitee如何上传整个项目文件夹
  13. QT翻金币小游戏实现(三)
  14. BZOJ2668:[CQOI2012]交换棋子——题解
  15. Linux Centos7 搭建简易堡垒机安装jailkit实现chroot
  16. jquery获取所有子元素宽度之和
  17. ArcGIS环境搭建及地图服务发布
  18. UE4-(光照)光照贴图大小及环境光遮蔽
  19. 《MFC编程》:MFC库中类的简介
  20. 信息流大决战:百度补齐最后一环、今日头条深沟固垒

热门文章

  1. 将ubuntu光盘作为安装源_[转载]Ubuntu 以光盘做为软件源
  2. cffi java_atomiclong-使用CFFI的原子长类型。-David Reid
  3. python加号换行,Python字符串拼接六种方法介绍
  4. python每月定时_paypal每月订阅计划设置为每月的第一天,并进行每月定期付款 – django python...
  5. mysql 字段字节_MySql字段类型及字节
  6. python字符串出栈方法_python字符串常用方法
  7. 使用指针输入输出一维数组
  8. 存在就不插入_DOM 插入节点和三个Child方法
  9. hive同时不包含一些字符串_Hive中常用的字符串操作
  10. skype安卓手机版_危险的战争游戏安卓手机版下载-危险的战争下载v1.0.13