当前位置: 首页 > news >正文

linux主机间免密登录

目录

原理:

相关命令:

一,执行命令 cd ~/.ssh/ ,进入目录

二,如果没有公钥和秘钥文件,则执行命令来生成

三,负责公钥给远端端服务器命令

四,实操

场景一,localhost主机要免密登录haha主机,命令执行

场景二: haha服务器免密登录localhost服务器,手工复制


linux系统的免密登录功能通常是通过 SSH 的密钥认证机制来实现的,这样你就可以在不输入密码的情况下登录到远程系统。这不仅方便,而且比使用密码认证更安全。

原理:

1.Client将自己的公钥存放在Server上,追加在文件authorized_keys中。

2.Server端接收到Client的连接请求后,会在authorized_keys中匹配到Client的公钥pubKey,并生成随机数R,用Client的公钥对该随机数进行加密得到pubKey(R),然后将加密后信息发送给Client。

3.Client端通过私钥进行解密得到随机数R,然后对随机数R和本次会话的SessionKey利用MD5生成摘要Digest1,发送给Server端。

4.Server端会也会对R和SessionKey利用同样摘要算法生成Digest2。

5.Server端会最后比较Digest1和Digest2是否相同,完成认证过程。

第四阶段:会话请求阶段

认证通过后,客户端向服务器端发送会话请求,建立新的连接

第五阶段:交互会话阶段:会话请求通过后,服务器端和客户端进行信息的交互

传输数据的的阶段:数据时要被加密(对称加密方式),对称加密的秘钥就是sessionKey(客户端和服务服务端在秘钥交换阶段互相计算出来的,sessionKey未进行网络传输)

相关命令:

一,执行命令 cd ~/.ssh/ ,进入目录
 

id_rsa 生成的私钥文件

id_rsa.pub 生成的公钥文件

authorized_keys文件 将要登录该机器,它的id_rsa.pub里面的加密内容,即公钥信息粘贴进去,即可完成互信

二,如果没有公钥和秘钥文件,则执行命令来生成

ssh-keygen -t rsa

三,负责公钥给远端端服务器命令

ssh-copy-id root@目的服务器ip

SSH免密登录有两种操作方式:1.手工复制公钥,2.直接命令执行

四,实操

首先环境准备:一台localhost:172.25.254.128,一台haha:171.25.254.131两知相互配置免密登录

以下是配置 SSH 免密登录的步骤:

场景一,localhost主机要免密登录haha主机,命令执行

 至此,localhost成功免密登录haha服务器

场景二: haha服务器免密登录localhost服务器,手工复制

生成公私钥和上面步骤一样 

 查看haha服务器生成的公钥,并复制到localhost服务器的authorized_keys文件中

至此,双方都可以免密登录

注意点是

谁想登录谁,谁就要把自己公钥放到对方的/root/.ssh/authorized_keys文件中

如:1想登录2,1就要把自己生成的公钥放入2的/root/.ssh/authorized_keys文件中

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • HBuidlerX 运行到Android App基座时提示没有检测到设备,该如何处理。
  • 002 | 常见的金融量化指标计算
  • Python电商网络数据采集实践||批量数据采集的API接口
  • 使用本地大模型从论文PDF中提取结构化信息
  • 深度学习--数据处理dataloader介绍及代码分析
  • 【C#】一个项目移动了位置,或者换到其他电脑上,编译报错 Files 的值“IGEF,解决方法
  • Elasticsearch 地理查询:高效探索空间数据
  • openstack使用笔记
  • antdv和element表格,假分页+表格高度处理mixins
  • springboot瑜伽课约课小程序-计算机毕业设计源码87936
  • 【数据结构与算法 | 力扣+二叉搜索树篇】力扣450, 98
  • C++中的::
  • 告别DockerHub 镜像下载难题:掌握高效下载策略,畅享无缝开发体验
  • 【Python深度学习】如何实现将将时间序列转换为图像的功能
  • 基于python的电商水果超市的设计与实现
  • (三)从jvm层面了解线程的启动和停止
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • android 一些 utils
  • Brief introduction of how to 'Call, Apply and Bind'
  • JavaScript 基本功--面试宝典
  • JAVA多线程机制解析-volatilesynchronized
  • leetcode386. Lexicographical Numbers
  • leetcode46 Permutation 排列组合
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • Node 版本管理
  • Python_OOP
  • Python学习笔记 字符串拼接
  • spring + angular 实现导出excel
  • TypeScript迭代器
  • 漂亮刷新控件-iOS
  • 前端攻城师
  • 三栏布局总结
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 学习ES6 变量的解构赋值
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • 数据库巡检项
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​字​节​一​面​
  • $nextTick的使用场景介绍
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (zt)最盛行的警世狂言(爆笑)
  • (二)Linux——Linux常用指令
  • (转)winform之ListView
  • (转)使用VMware vSphere标准交换机设置网络连接
  • **PHP二维数组遍历时同时赋值
  • . NET自动找可写目录
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .so文件(linux系统)
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @RequestBody与@ModelAttribute