SSH(Secure Shell) 介绍一

文章目录

  • 基本原理
  • 首次建立连接的时候的公钥交换
  • 通过ssh来进行密码登录
  • 利用公钥来登录

基本原理

SSH(Secure Shell)是一套协议标准,可以用来实现两台机器之间的安全登录以及安全的数据传送,其保证数据安全的原理是非对称加密。

传统的对称加密使用的是一套秘钥,数据的加密以及解密用的都是这一套秘钥,可想而知所有的客户端以及服务端都需要保存这套秘钥,泄露的风险很高,而一旦秘钥便泄露便保证不了数据安全。

非对称加密解决的就是这个问题,它包含两套秘钥 - 公钥以及 私钥,其中公钥用来加密,私钥用来解密,并且通过公钥计算不出私钥,因此私钥谨慎保存在服务端,而公钥可以随便传递,即使泄露也无风险。

保证SSH安全性的方法,简单来说就是客户端和服务端各自生成一套私钥和公钥,并且互相交换公钥,这样每一条发出的数据都可以用对方的公钥来加密,对方收到后再用自己的私钥来解密。

在这里插入图片描述

由上一张图可以看出来,两台机器除了各自的一套公、私钥之外,还保存了对方的公钥,因此必然存在一个交换各自公钥的步骤。

首次建立连接的时候的公钥交换

建立连接时的公钥交换,实际上并不是简单地交换公钥,而是存在专门的算法,这一步在首次连接时,数据传送之前发生。

  1. 客户端发起链接请求
  2. 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
  3. 客户端生成密钥对
  4. 客户端用自己的公钥异或会话ID,计算出一个值,并用服务端的公钥加密
  5. 客户端发送加密后的值到服务端,服务端用私钥解密
  6. 服务端用解密后的值异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
  7. 至此,双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密

首次建立连接时的公钥互换的流程原理图如下所示:

在这里插入图片描述

这里有一个有趣的地方,两台机器第一次使用SSH链接时,当服务端返回自己的公钥(第2步)的时候,客户端会有一条信息提示,大意是无法验证对方是否可信,并给出对方公钥的MD5编码值,问是否确定要建立链接。

这是因为SSH虽然传输过程中很安全,但是在首次建立链接时并没有办法知道发来的公钥是否真的来自自己请求的服务器,如果有人在客户端请求服务器后拦截了请求,并返回自己的公钥冒充服务器,这时候如果链接建立,那么所有的数据就都能被攻击者用自己的私钥解密了。这也就是所谓的中间人攻击。

在这里插入图片描述

通过ssh来进行密码登录

ssh常用来远程登录到别的机器,有两种常用的方法,第一种便是用账号密码来登录:

  1. 服务端收到登录请求后,首先互换秘钥,详细步骤如上一节所述
  2. 客户端用服务端的公钥加密账号密码并发送
  3. 服务端用自己的秘钥解密后得到账号密码,然后进行验证
  4. 服务端用客户端的公钥加密验证结果并返回
  5. 客户端用自己的秘钥解密后得到验证结果

密度登录的验证流程图如下所示:

在这里插入图片描述

利用公钥来登录

这是第二种远程登录别的机器的方法,就是利用公钥来登录。

有时候并不是开发者手动去连接服务器,而是客户端的程序需要连接到服务器,这时候用密码登录就不方便,一是需要处理输入密码的问题,二是需要想办法安全的储存密码到程序里,这种情况下便可以利用公钥来进行无密码登录。或者说你经常要远程连接到某个服务器,又不想次次都输入账号和密码,也可以采用这种方法:

  1. 客户端用户必须手动地将自己的公钥添加到服务器一个名叫authorized_keys的文件里,顾名思义,这个文件保存了所有可以远程登录的机器的公钥。
  2. 客户端发起登录请求,并且发送一个自己公钥的指纹(具有唯一性,但不是公钥)
  3. 服务端根据指纹检测此公钥是否保存在authorized_keys中
  4. 若存在,服务端便生成一段随机字符串,然后利用客户端公钥加密并返回
  5. 客户端收到后用自己的私钥解密,再利用服务端公钥加密后发回
  6. 服务端收到后用自己的私钥解密,如果为同一字符串,则验证通过

利用公钥登录的关键是必须手动将客户端的公钥添加到服务端,比如 GitHub 便有这一步骤,添加了之后便可无密码登录。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334661.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gc 堆外_GC解释:堆

gc 堆外世代垃圾收集器 JVM堆分为两个不同的世代。 一种称为“年轻”,第二种称为“老”(有时称为终身制)。 年轻一代又分为两个主要的逻辑部分:伊甸园和幸存者空间。 垃圾收集人员还使用了虚拟空间供年轻人和老年人使用&#xff0…

数据传输协议汇总

文章目录一、FTP(File Transfer Protocol 文件传输协议)(一)FTP 通讯端口(二)FTP 支持两种连接模式(三)缺点(四)FTP 命令(五)FTP 响应码(六&#…

得力科学计算机怎么求余,山商“郭叔”:妙招讲高数 考研路上得力导师

山东工商学院数学与信息科学学院教授郭林大众网海报新闻记者 屈晨晨 烟台报道“郭老师人特别和蔼,能够和学生们打成一片,不仅讲课风趣,同时也给予了我们很多帮助,私底下我们都喊他郭叔。”这是山东工商学院很多毕业生对郭老师的评…

如何打开笔记本电脑的摄像头_Win8系统笔记本电脑摄像头无法使用的解决办法...

Win8系统电脑摄像头不能用怎么办?使用Win8系统笔记本电脑的用户反映,电脑摄像头无法使用了,这是怎么回事呢?如何解决这个问题?请看下文。解决方法:1、打开计算机中的“控制面板”,如图所示&…

浅析文件传输协议 (ftp) 的工作原理

起初,FTP并不是应用于IP网络上的协议,而是ARPANEt网络中计算机间的文件传输协议, ARPANET是美国国防部组建的老网络,于1960-1980年使用。在那时, FTP的主要功能是在主机间高速可靠地传输文件。目前FTP仍然保持其可靠性…

vb.net 同时给多个属性赋值_Python尚学堂高淇|1721时间表示unix时间点毫秒微秒time模块浮点数自动转换强制转换增强赋值运算符...

017浮点数-自动转换-强制转换-增强赋值运算符浮点数称为float用a*b^10形式表示的科学计数法,比如:3.14,314E-2或者314e-2这些数字在内存当中也是按照科学计数法存储、>>>float(3)3>>>314E-23.14>>>float(“3.14”)3.14>>>int(3…

计算机键盘复制键是哪个,键盘按什么键复制粘贴_键盘上复制粘贴快捷键是哪个键-win7之家...

使用电脑的时候经常会需要使用到复制粘贴功能,许多用户可能会习惯使用右键来复制粘贴,其实这样有点麻烦,比较简单的就是使用快捷键来操作,但是有部分用户还不知道键盘按什么键复制粘贴,如果你也有一样需求的话&#xf…

我的世界java无法安装包_手把手教你搭建java环境

前文由于一些历史原因,开发java程序需要技术人员自行搭建环境,而搭建环境对于新手来说并不友好,不像其他语言那般方便,现如今,为帮助想入门java却无法顺利搭建的同学,编写该教程,如果觉得本文有用,请添加关注,更多java教程,后续更新~第一步 下载JDK可自行前往Oracle官网下载指定…

vs 2019 社区版许可证过期_Switch版《最终幻想12:黄道时代》对比PS4版 就没差

2017年7月发布的“最终幻想12”重制版《最终幻想12:黄道时代》登陆PS4平台,4月30日这款经典游戏还将登陆Xbox One和Switch平台,都将支持60帧运行。那么游戏在Switch这款掌机上的表现到底如何呢?油管频道Direct-Feed Games就为大家…

局域网限速软件_8款Windows实用软件推荐,纯干货,总有一款是你必备的

开学后,有些小伙伴得走进大学校门,有些小伙伴走向公司大门,不管你做出了哪种选择,最终都会走向社会,走向岗位。我已经毕业走向社会近10年了,珍藏了一些小视频,呃说错了,是珍藏了一些…

javaserver_什么是JavaServer Faces(JSF)

javaserver这是一个分为两部分的系列,其中我介绍了JSF 2及其如何适合Java EE生态系统。 在第1部分中,我将介绍JavaServer Pages(JSF)背后的基本思想 ,在第2部分中,我将介绍Facelets声明语言 。 在构建Web…

安装计算机一级出现appcrash,win10系统运行程序出现appcrash错误的办法

win10系统使用久了,好多网友反馈说win10系统运行程序出现appcrash错误的问题,非常不方便。有什么办法可以永久解决win10系统运行程序出现appcrash错误的问题,面对win10系统运行程序出现appcrash错误的图文步骤非常简单,只需要1、同…

winpe镜像文件iso下载_下载:微软正式发布Win10 2004版并即日起开始推送

PS:关于Windows 10 v2004版蓝点网早前已建立专题,目前该专题已收录关于该版本的101篇文章,微信篇幅有限无法全部发过来,准备升级的用户建议点击阅读原文按钮或使用电脑访问蓝点网首页查看Windows 10 v2004专题。刚刚微软在官方博客…

iphone固件降级_我在iPhone上装了个安卓

目前使用Android系统设备的好处就是可以执行更多的操作。主要是因为安卓拥有自己的开源计划AOSP(Android Open Source Project),比iOS开放了更多的应用接口API,商家可以用Android源码进行二次开发,相对iOS开放很多。图片来自百度iPhone跟Andr…

极速pdf编辑器的水印如何去掉_如何修改PDF?有没有详细的PDF编辑器操作方法?...

在工作中我们每天都会处理很多文件,而PDF格式因为其格式稳定也被越来越多的人接受并使用,但也正因为如此,PDF的修改相比较以前常用的Word会复杂很多。那么应该如何修改PDF呢?其实使用PDF编辑器就能让PDF文档像Word一样轻松编辑。1…

python django开发网站项目难吗_用django开发网站时遇到的问题

1.网站的登录功能怎么实现:密码的存储机制、重置密码时链接的生成算法,第三方认证的原理等等。django的密码储存是 Hashsalt 并迭代 第三方认证是用oauth2django-admin里面有写了哦 循环1000次加密算法google关键词 hash salt,oauth22.介绍设…

计算机网络专科升本科,目前专科升本科有哪几种途径?

原标题:目前专科升本科有哪几种途径?随着社会的高速发展,只有专科学历是远远不够自身发展需求的。于是有不少同学就想专科升本科学历来提高自己的职业竞争力,但他们对于目前专科升本科的几种途径还不够了解。那么,目前…

java私有属性和私有方法_Java 9中什么是私有的?

java私有属性和私有方法在进行面试时,我发现大多数应聘者都不知道Java中的private修饰符真正意味着什么。 他们对此有所了解,足以应付日常编码,但还远远不够。 这不成问题。 足够了解就足够了。 但是,了解Java的一些内部工作仍然很…

stata F值缺失_stata面板数据回归操作之GMM

新手面板数据回归之GMM 的 stata 操作步骤广义矩估计( Generalized Method of Moments 即 GMM ) 原理就是回归!就是一种高级点的回归!我也是新手,也有很多不太懂的地方。断断续续学习了两个月,看了很多文献…

后缀为frm是什么文件_Shell 点文件可以为你做点什么

了解如何使用配置文件来改善你的工作环境。-- H.waldo Grunenwald(作者)不要问你可以为你的 shell 点文件(dotfile)做什么,而是要问一个 shell 点文件可以为你做什么!我一直在操作系统领域里面打转,但是在过去的几年中,我的日常使…