SSH实现电脑VScode免密登录到虚拟机其原理

在网上想看一下这个原理。发现写的还是比较乱,所以自己总结了一份方便回顾

SSH免密登录的原理主要基于非对称密钥加密技术,比较常用的是RSA算法。

以下是SSH免密登录的详细步骤和原理:

1. 生成密钥对

  • 在客户端上生成一对密钥,包括一个私钥和一个公钥。私钥将保留在客户端,而公钥将被复制到远程服务器。
  • 这一步通常使用ssh-keygen命令来完成,该命令会生成一对密钥(默认是RSA密钥对),并将私钥保存在~/.ssh/id_rsa文件中,公钥保存在~/.ssh/id_rsa.pub文件中。

2. 复制公钥到服务器

  • 将客户端生成的公钥复制到远程服务器的~/.ssh/authorized_keys文件中。这可以通过使用ssh-copy-id命令或手动将公钥内容添加到文件中来完成这一步是为了在后续接收到客户端的公钥时进行比对。
  • ssh-copy-id命令会自动将公钥追加到远程服务器上的~/.ssh/authorized_keys文件中,如果该文件不存在,则会先创建该文件。
  • 在SSH通信中,~/.ssh/authorized_keys 文件是SSH服务器用来验证客户端公钥的地方。这个机制允许SSH服务器确认尝试连接的客户端是否持有与服务器上存储的公钥相对应的私钥,从而实现了免密登录和身份验证。这个过程是单向的,即客户端主动连接到服务器,并请求服务器执行某些操作或提供服务。务器本身不会主动通过SSH连接去“访问”客户端。某些黑客的服务器就算有了用户的公钥,也只是可以让用户登录到该服务器,并不能反向操作用户的电脑。

3. 连接远程服务器

  • 当客户端尝试连接到远程服务器时,它会向服务器发送一个连接请求,其中包括客户端的公钥(实际上,在初次连接时,客户端并不直接发送公钥,而是在后续的身份验证过程中使用)。
    第一次连接主要是建立tcp连接,然后交换对应协议的版本信息。再协商会话期间将要使用的加密算法、密钥交换算法、消息认证算法。

4. 身份验证过程

服务器在通过检索authorized_keys文件与请求连接的客户端所发送的内容中存在相同的公钥时。证明该客户端是合法的请求,但是仍需验证在客户端中有公钥对应的密钥。否则公钥是比较容易被获取的,黑客可以通过这个公钥进行合法的请求连接。所以需要验证请求连接的服务器上有对应的私钥,才能证明是对应合法且唯一的客户端。

  • 挑战-响应机制
    • 远程服务器生成一个随机数(挑战)作为质询,并使用客户端的公钥(从~/.ssh/authorized_keys文件中读取)加密这个随机数。
    • 加密后的挑战被发送给客户端。
    • 客户端使用自己的私钥解密这个加密的挑战,并将解密后的结果(响应)发送回服务器。
    • 服务器将解密后的挑战与原始的挑战进行比较,如果两者匹配,则身份验证成功,服务器允许客户端登录。

5. 会话密钥协商(可选,但常见于增强安全性)

  • 在一些实现中,SSH协议还会在身份验证之后进行会话密钥的协商,以确保后续的通信安全。
  • 这一步通常涉及客户端和服务器之间的密钥交换协议,以生成一个共享的会话密钥,用于加密后续的通信数据。

6. 安全性考虑

  • SSH免密登录的安全性依赖于私钥的保密性。如果私钥被泄露,攻击者就可以冒充客户端进行登录。
  • 因此,建议定期更换私钥,并确保私钥文件的安全存储(例如,使用强密码保护私钥文件,或将其存储在安全的硬件中)。

总结

        在SSH免密登录的过程中,私钥并不是直接用来“解密”公钥加密的文件或挑战。这里的“解密”过程实际上是利用了非对称加密技术的特性,其中公钥用于加密数据,而对应的私钥用于解密这些数据。这是非对称加密技术的核心原理之一。

会话密钥加密技术详细解释

会话密钥(Session Key)生成

  1. 初始化客户端发起与服务器的连接请求。作为响应,服务器将其公钥 As 发送给客户端。这个公钥将被用于加密后续发送给服务器的敏感信息。

  2. 会话ID交换:为了确保会话的唯一性,服务器生成一个会话ID p 并将其发送给客户端

  3. 会话密钥生成客户端生成一个随机的会话密钥 q,该密钥将用于后续通信的加密。然后,客户端计算 r = p ⊕ q(其中  表示异或操作),这样服务器就可以在接收到 r 和已知 p 的情况下恢复出 q

  4. 加密传输 r客户端使用服务器的公钥 As 加密 r,然后将加密后的数据发送给服务器。这样,只有服务器(拥有私钥 Bs)能够解密并恢复出 r

  5. 解密与密钥恢复服务器使用私钥 Bs 解密接收到的加密数据,得到 r。然后,服务器通过执行 q = r ⊕ p 来恢复出会话密钥 q

至此,客户端和服务器都拥有了相同的会话密钥 q,可以使用它来对后续通信进行加密。

认证

  1. 随机数生成与加密为了验证客户端是否确实拥有会话密钥 q服务器生成一个随机数 x,并使用客户端的公钥加密 x,生成 S(x),然后发送给客户端。

  2. 解密随机数:客户端使用对应的私钥 Bc(与 Ac 配对)来解密 S(x),从而得到随机数 x

  3. 哈希计算与传输:客户端使用会话密钥 q 和随机数 x 来计算哈希值 n(q+x)(注意:这里 q+x 可能是指将 q 和 x 连接起来的字符串,因为直接对数字进行加法运算在哈希上下文中没有意义)。然后,客户端将 n(q+x) 发送给服务器。

  4. 哈希验证:服务器也使用会话密钥 q 和随机数 x 来计算哈希值 m(q+x)。然后,服务器比较 m(q+x) 和从客户端接收到的 n(q+x)

  5. 认证成功:如果 m(q+x) 和 n(q+x) 相同,则服务器确认客户端确实拥有正确的会话密钥 q,并且认证成功。

请注意,在哈希计算中,q+x 通常应该被理解为将 q 和 x 的二进制表示连接成一个更长的字符串,然后再对这个字符串进行哈希计算。此外,虽然MD5在某些情况下仍然被使用,但由于其已知的安全弱点,建议使用更安全的哈希函数,如SHA-256。

会话密钥加密技术简略解释

双方获得会话密钥

  • server在会话连接时需要发送会话ID与自己的公钥给client。
  • client在接收到数据后,用自己的会话密钥与收到的会话ID进行异或,然后用收到的公钥进行加密并发送回去给server。
  • server在收到数据后会利用私钥解密并且进行数学运算,然后可以得到相同的会话密钥。

由server分配会话ID,client提供会话密钥。server提供加密工具(公钥),client利用加密工具加密,server利用解密工具(私钥)解密。从而令双方获得会话密钥。这个密钥就可以用来后续通信的加密。

认证

此时server与client都具有了相同的会话密钥,但这个结果的达成只是需要client请求连接,server发送自己的公钥,结果为server获得会话密钥q。但是还需要验证client拥有私钥

  • server产生一个随机数x,用client的公钥加密后得到S(x)然后将该数据发送给client。
  • client获得加密后的数据后,需要用client自身的私钥进行解密获得x,然后再用会话密钥 q 和随机数 x 来计算哈希值 n(q+x)。并直接将该值发送回给server。
  • server端同样使用会话密钥 q 和随机数 x 来计算哈希值 m(q+x)。然后,服务器比较 m(q+x) 和从客户端接收到的 n(q+x)
  • 如果 m(q+x) 和 n(q+x) 相同,则服务器确认客户端确实拥有正确的会话密钥 q,并且认证成功。验证了拥有server authorized_keys文件内公钥对应的密钥的客户端有相同的会话密钥,允许通信。

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

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

相关文章

初识Docker及管理Docker

Docker部署 初识DockerDocker是什么Docker的核心概念镜像容器仓库 容器优点容器在内核中支持2种重要技术:Docker容器与虚拟机的区别 安装Docker源码安装yum安装检查Docker Docker 镜像操作配置镜像加速器(阿里系)搜索镜像获取镜像查看镜像信息…

【综合案例】使用DevEco Studio编写B站视频卡片

效果展示 知识点 层叠布局 介绍:层叠布局具有较强的 组件层叠 能力。 使用场景:卡片层叠效果 特点:层叠操作 更简洁,编码效率更高。【绝对定位的优势是更灵活】 Stack容器内的子元素顺序是先写的在最下面,即从下到上依…

Linux服务器CPU使用率或CPU负载较高问题的排查及解决方案

本文主要介绍当Linux系统ECS实例CPU使用率或CPU负载较高时,如何排查分析及常见案例说明。 操作场景 在您使用ECS实例过程中,可能会遇到实例CPU使用率或CPU负载持续较高的情况,您可以按照以下步骤排查定位具体问题。 找到影响CPU使用率或CPU…

每日期刊分享

检索:知网 G4 刊期:现收25年3-4月刊版面,预计25年4-5月出刊: 收稿范围:收小学到高中的教育教学稿件

react高级组件ProForm实现输入框搜索

实现界面 <Col span{12}><ProForm.Itemname"name"label"推荐用户"><AutoCompleteclassName"pro-field pro-field-md"placeholder"请输入用户名"options{NameArr}onSearch{debounce(searchUser, 500)}onSelect{onSelect…

MATLAB(9)GIS模型

一、介绍 在GIS&#xff08;地理信息系统&#xff09;中&#xff0c;模型的实现可以非常多样化&#xff0c;取决于你想要解决的具体问题。MATLAB作为一个强大的数值计算和可视化工具&#xff0c;可以被用来开发GIS相关的模型&#xff0c;尽管它不是专门为GIS设计的&#xff08…

jeecguniapp上传附件/图片及预览

一、上传图片 具体页面显示是 注意事项是传递除文件外的参数需要包在formData里 formData:{UUID:that.state.id,type:bill,}, 二、预览图片及附件 重点是附件预览图片预览即图片更换图片path显示 pdf预览代码 同事写的给的笔记及注意事项

亚马逊自养买家账号的优点和测评优势

很多人可能会认为&#xff0c;自行培育买家账号&#xff08;即自养号&#xff09;的成本相对较高&#xff0c;如果仅仅用于产品测评&#xff0c;可能会觉得性价比不高。然而&#xff0c;买家账号在电商运营中其实拥有多重重要作用&#xff0c;远不止于简单的测评功能。 那么&am…

文案人的梦工场,网易入职指南!

网易云对于咱们一些有点文艺的文案策划来说&#xff0c;简直就是梦中情司。 在这里工作锻炼机会很多&#xff0c;也很开拓眼界&#xff0c;能获得相当于在别处3倍能力的成长速度&#xff0c;福利待遇也是很好的。 要进入网易云音乐做文案策划&#xff0c;你可以按照以下步骤进…

qiankun 微前端 隔离子应用样式,解决 ant-design-vue 子应用样式污染问题(已落地)

样式冲突产生原因 先分析乾坤qiankun 构建之后&#xff0c;会根据你的配置 给每个子应用生成一个id&#xff0c; 当加载到对应子应用的时候&#xff0c;就把内容放到对应的id 标签里去&#xff0c; 这样能有效的隔离 js 代码&#xff0c;但是样式是加载在全局的 所以 当两个子…

全开源TikTok跨境商城源码/TikTok内嵌商城+搭建教程/前端uniapp+后端

多语言跨境电商外贸商城 TikTok内嵌商城&#xff0c;商家入驻一键铺货一键提货 全开源完美运营 海外版抖音TikTok商城系统源码&#xff0c;TikToK内嵌商城&#xff0c;跨境商城系统源码 接在tiktok里面的商城。tiktok内嵌&#xff0c;也可单独分开出来当独立站运营 二十一种…

大模型之技术概述

本文作为大模型综述第一篇&#xff0c;介绍大模型技术基本情况。 目录&#xff1a; 1.大模型技术的发展历程 2.大模型技术的生态发展 3.大模型技术的风险与挑战 1.大模型技术的发展历程 2006 年 Geoffrey Hinton 提出通过逐层无监督预训练的方式来缓解由于梯度消失而导致的…

HyperDiffusion阅读

ICCV 2023 创新点 HyperDiffusion&#xff1a;一种用隐式神经场无条件生成建模的新方法。 HyperDiffusion直接对MLP权重进行操作&#xff0c;并生成新的神经隐式场。 HyperDiffusion是与维度无关的生成模型。可以对不同维度的数据用相同的训练方法来合成高保真示例。 局限性…

贪心算法—股票交易时机Ⅱ

在此前我们已经介绍过贪心算法以及股票交易时机Ⅰ&#xff0c;有需要的话可以移步至贪心算法_Yuan_Source的博客-CSDN博客 题目介绍 122. 买卖股票的最佳时机 II - 力扣&#xff08;LeetCode&#xff09; 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第…

楼宇智能技术实训室解决方案

一、楼宇智能技术实训室建设背景 随着信息技术的迅猛发展&#xff0c;智能化已经成为现代建筑发展的重要趋势。楼宇智能技术&#xff0c;作为智能化建筑的核心支撑&#xff0c;集成了物联网、大数据、云计算、人工智能等多种先进技术&#xff0c;实现了楼宇内部各类设施、系统…

【Java算法专场】前缀和(上)

前言 在求数组或者矩阵求和等问题&#xff0c;我们如果采用暴力解法&#xff0c;时间复杂度可能会达到O(n)或者更高&#xff0c;因此&#xff0c;我们可利用前缀和来解决。 前缀和 前缀和是指序列中的n项和&#xff0c;相当于数学问题中秋数列的前n项和。主要用于数组或列表中…

ElasticSearch入门(六)SpringBoot2

private String author; Field(name “word_count”, type FieldType.Integer) private Integer wordCount; /** Jackson日期时间序列化问题&#xff1a; Cannot deserialize value of type java.time.LocalDateTime from String “2020-06-04 15:07:54”: Failed to des…

【C++】学习笔记——C++的类型转换

文章目录 二十三、C的类型转换1. C语言中的类型转换2. C类型转换static_castreinterpret_castconst_castdynamic_cast 未完待续 二十三、C的类型转换 1. C语言中的类型转换 在C语言中&#xff0c;如果赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不匹配&#x…

声学改造后的气膜馆:提升体验的独特优势—轻空间

气膜馆因其快速建造、低成本和灵活性&#xff0c;近年来广泛应用于各种运动和活动场所。然而&#xff0c;传统气膜馆在声学表现上存在一些挑战&#xff0c;例如回声和噪音的控制。随着声学改造技术的应用&#xff0c;气膜馆的声学环境得到了显著改善。轻空间将探讨声学改造后的…

轨迹优化 | 基于ESDF的共轭梯度优化算法(附ROS C++/Python仿真)

目录 0 专栏介绍1 数值优化:共轭梯度法2 基于共轭梯度法的轨迹优化2.1 障碍约束函数2.2 曲率约束函数2.3 平滑约束函数3 算法仿真3.1 ROS C++实现3.2 Python实现0 专栏介绍 🔥课设、毕设、创新竞赛必备!🔥本专栏涉及更高阶的运动规划算法轨迹优化实战,包括:曲线生成、…