免密登录ssh

 前言:


1.基于口令的认证(password认证):

客户端向服务器发出password认证请求,将用户名和密码加密后发送给服务器,服务器将该信息解密后得到用户名和密码的明文,与设备上保存的用户名和密码进行比较,并返回认证成功或失败消息。

2.基于密钥的认证(publickey认证):

客户端产生一对公共密钥,将公钥保存到将要登录的服务器上的那个账号的家目录的.ssh/authorized_keys文件中。认证阶段:客户端首先将公钥传给服务器端。服务器端收到公钥后会与本地该账号家目录下的authorized_keys中的公钥进行对比,如果不相同,则认证失败;否则服务端生成一段随机字符串,并先后用客户端公钥和会话密钥对其加密,发送给客户端。客户端收到后将解密后的随机字符串用会话密钥发送给服务器。如果发回的字符串与服务器端之前生成的一样,则认证通过,否则,认证失败。

[admin@localhost ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/admin/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/admin/.ssh/id_rsa.
Your public key has been saved in /home/admin/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:DEoH5oaQ2oJ8FT/oYGzCPuQvYYSg7YLO46LRa3fkDRE admin@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|o.  o..          |
|*o.+ oE          |
|**o==.o+         |
|Xo=+oo.o.        |
|oBo .. .S        |
|+o+   o          |
|.=.. o o         |
|o.+.. o .        |
|+o.. .           |
+----[SHA256]-----+

一、密钥生成

  1. 非对称加密:SSH免密登录首先依赖于非对称加密技术,即生成一对密钥:公钥(public key)和私钥(private key)。公钥是公开的,可以分享给任何人;私钥是私有的,必须严格保密。
  2. 密钥生成:在客户端机器上,使用ssh-keygen命令生成密钥对。默认情况下,生成的私钥文件名为id_rsa,公钥文件名为id_rsa.pub,并保存在用户目录下的.ssh文件夹中。

二、公钥传输与认证

  1. 公钥传输:将客户端生成的公钥(id_rsa.pub)传输到服务器的~/.ssh/authorized_keys文件中。这可以通过手动复制粘贴或使用ssh-copy-id命令自动完成。
  2. 公钥认证:当客户端尝试通过SSH连接到服务器时,SSH服务器会检查~/.ssh/authorized_keys文件中是否存在与客户端公钥相匹配的公钥。

三、认证过程

  1. 客户端请求连接:客户端向SSH服务器发起连接请求。
  2. 服务器响应:服务器生成一个随机数(挑战),并使用客户端的公钥加密这个随机数,然后将加密后的随机数发送给客户端。
  3. 客户端解密:客户端使用自己的私钥解密接收到的加密随机数,得到原始的随机数。
  4. 会话密钥生成:客户端和服务器都使用这个随机数作为基础,通过一系列复杂的算法生成一个会话密钥(session key)。这个会话密钥用于后续通信的加密和解密。
  5. 认证成功:如果客户端能够成功解密服务器发送的加密随机数,并生成与服务器相同的会话密钥,则认证成功。此时,客户端和服务器之间的通信就可以使用会话密钥进行加密和解密了。

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

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

相关文章

香橙派AIpro开发板评测:部署yolov5模型实现图像和视频中物体的识别

OrangePi AIpro 作为业界首款基于昇腾深度研发的AI开发板,自发布以来就引起了我的极大关注。其配备的8/20TOPS澎湃算力,堪称目前开发板市场中的顶尖性能,实在令人垂涎三尺。如此强大的板子,当然要亲自体验一番。今天非常荣幸地拿到…

边界无限陈佩文:红蓝对抗安全演练常态化的各方分析

虽然常态化演练尚未正式开始,但我们仍然希望对各方的表现进行一些分析和预测,以辅助我们对市场的判断和决策。同时,也希望通过这些初步的见解,抛砖引玉,引发更多有价值的讨论和观点。 “船停在码头是最安全的&#xf…

Hi3861 OpenHarmony嵌入式应用入门--SNTP

sntp(Simple Network Time Protocol)是一种网络时间协议,它是NTP(Network Time Protocol)的一个简化版本。 本项目是从LwIP中抽取的SNTP代码; Hi3861 SDK中已经包含了一份预编译的lwip,但没有…

怎么把数据转换成百度k线图

要将数据转换成百度K线图,您需要按照百度K线图的要求对数据进行处理和格式化。以下是一个简单的示例,演示如何将数据转换成百度K线图的格式: python import json # 假设您有以下数据 data [ {"date": "2021-01-01"…

【Python123题库】#计算整数各位数字之和 #分类统计字符个数 #用户登录C #二分法求平方根B

禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/140079918 参考教程:B站视频讲解——https://space.bilibili.com/3546616042621301 有帮助麻烦点个赞 ~ ~ Python123题库 计算整数各位数字之和分类统计字符个数用户登录C…

Java基础之关键字

关键字 transient 被transient修饰的成员变量在序列化(serialization)时,值会被忽略,在反序列化时会被设为初始值(对象为null) synchronized 既可以修饰方法也可以修饰方法块,被synchronized修饰的代码块及方法,在同一时间只能…

nacos占位符配置

有的时候,我们的nacos会出现一个配置文件里,有多个配置项对应的值都是一样的,这个时候nacos就可以用到占位符${}进行参数配置。 auth:api1:host: http://aaa.comapi2:host: http://aaa.com可以将共同的参数提取出来统一配置,后期…

线程间的通信

文章目录 线程间的通讯技术就是通过等待和唤醒机制,来实现多个线程协同操作完成某一项任务,例如经典的生产者和消费者案例。等待唤醒机制其实就是让线程进入等待状态或者让线程从等待状态中唤醒,需要用到两种方法,如下&#xff1a…

Java中的内存数据库与缓存技术

Java中的内存数据库与缓存技术 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 1. 内存数据库的概念与优势 1.1 什么是内存数据库? 内存数据库是…

python写的工具代码总结

目录 python画图&处理图片python增大图片的大小(比如将几百K的照片增加到几mb)解决python画图无法显示中文的问题python画折线图 & 一张图上三条折线 & 设置折线marker & chatgpt画折线图的提示词python将png格式的图片转换为jpg格式的图…

红蓝对抗下的内网横向移动渗透技术详解

一、利用Windows计划任务横向移动 Windows计划任务是一个非常实用的功能,可以帮助我们自动完成一些重复性的任务。比如,我们可以设定一个计划任务来自动备份文件、更新软件、执行脚本等,本文主要介绍了如何利用Windows计划任务进行横向渗透。 &#xf…

列举操作redis set的命令

Redis中的Redis中的Set是一种无序的Set是一种无序的、不包含重复元素的字符串集合。、不包含重复元素的字符串集合。操作Redis Set的命令非常丰富,下面列举了一些常用的命令: **S操作Redis Set的命令非常丰富,下面列举了一些常用的命令&#…

C#委托事件的实现

1、事件 在C#中事件是一种特殊的委托类型,用于在对象之间提供一种基于观察者模式的通知机制。 1.1、事件的发送方定义了一个委托,委托类型的声明包含了事件的签名,即事件处理器方法的签名。 1.2、事件的订阅者可以通过运算符来注册事件处理器…

Python基础小知识问答系列-过滤列表元素

1. 问题: 如何根据单一条件过滤列表的元素? 如何根据复杂条件过滤列表的元素? 2. 解决方式: 可以使用推导式生成器,进行单一条件的列表元素过滤,尤其是列表内容较多时; 也可以使用filter函数进行列…

快速排序c++java代码实现

快速排序的思想 &#xff08;基于分治法&#xff09;: 每次选一个基准元素x&#xff0c;通过一次遍历将排序表划分为独立的两部分a[l,k-1],a[k1,r]; 其中左边的元素<x,右边的1元素>x,然后递归下去&#xff0c;直到每个块的大小为1 ; c #include<bits/stdc.h> …

Linux Static Keys和jump label机制

文章目录 前言一、asm goto二、API使用2.1 低版本API2.2 高版本API 三、jump label四、源码分析4.1 数据结构4.2 static_key_false4.3 jump_label_init4.4 __jump_label_transform4.5 static_key_slow_inc/dec 五、__jump_table节5.1 内核5.2 内核模块 六、修改内存代码6.1 x86…

24西安电子科技大学数学与统计学院—考研录取情况

24西安电子科技大学—数学与统计学院—考研录取统计 01、数学与统计学院各个方向 02、24数学与统计学院近三年复试分数线对比 数统院24年院线相对于23年院线增加高达30分&#xff0c;确实增长浮动比较高&#xff0c;接近30分的水平&#xff0c;因此大家更需要好好去努力&#x…

GTest和Catch2单元测试学习(附Cmake测试代码库)

kevin_CTest CTest 单元测试学习 Gitee库&#xff1a; https://gitee.com/bigearrabbit/kevin_ctest.git 示例多是从网页文章上摘取的&#xff0c;大部分记录在下面&#xff0c;或者源码内。供学习参考。 CTest 学习Catch2 框架 单个文档的测试架构&#xff0c;使用方便&am…

FastGPT 报错:undefined 该令牌无权使用模型:gpt-3.5-turbo (request id: xxx)

目录 一、FastGPT 报错 二、解决方法 一、FastGPT 报错 进行对话时 FastGPT 报错如下所示。 [Error] 2024-07-01 09:25:23 sse error: undefined 该令牌无权使用模型:gpt-3.5-turbo (request id: xxxxx) {message: 403 该令牌无权使用模型:gpt-3.5-turbo (request id: x…

人机交互中信息之间的距离

在人机交互中&#xff0c;信息之间的距离可以从多个角度来理解和描述&#xff1a; 1、物理距离 &#xff1a;这指的是用户与交互设备&#xff08;例如电脑、手机、智能设备&#xff09;之间的物理空间距离。随着移动设备的普及和技术的发展&#xff0c;用户可以在不同的物理位置…