ssh无密码自动登录实现原理

Linux命令ssh-keygen -t rsa用于生成公钥、私钥,其中RSA是一种非对称加密算法,可以用于加密和数字签名等操作。

生成公钥和私钥的原理:

利用RSA算法生成一对密钥,其中一个是私钥,另一个是公钥。

私钥只由持有者保存,公钥则可以向任何人公开。

使用公钥加密的信息只能由私钥解密,而使用私钥签名的信息可以由公钥验证。

使用ssh-keygen -t rsa生成公钥、私钥的步骤如下:

  1. 打开终端窗口,输入命令ssh-keygen -t rsa,按回车键。

  2. 按照提示输入密钥文件存放路径和密码(可选),也可以直接回车使用默认值。

  3. 生成的私钥和公钥文件存放在用户主目录下的隐藏目录.ssh中,私钥文件名为id_rsa,公钥文件名为id_rsa.pub

使用生成的公钥和私钥进行认证登录等操作时,需要将公钥复制到远程服务器的~/.ssh/authorized_keys文件中,并将私钥保存在本地,使用命令ssh -i /path/to/private/key user@host进行认证登录。

ssh-copy-id是一个用于将本地公钥添加到远程主机的授权文件中的命令。它的作用是完成免密码登录的设置。

使用ssh-copy-id命令时需要指定远程主机名称或IP地址,以及要将公钥添加到授权文件的用户名,如下:

ssh-copy-id user@remote-host

执行此命令后,系统会提示输入远程主机的密码,以验证身份。如果密码验证通过,本地主机的公钥就会被添加到远程主机的授权文件中。

ssh-copy-id的实现原理是通过SSH协议将本地主机的公钥复制到远程主机的授权文件中。在执行ssh-copy-id命令时,会建立一条SSH连接,并将本地主机的公钥复制到远程主机的授权文件中。这样,之后就可以使用SSH协议进行免密码登录了。

使用ssh-copy-id命令的前提是本地主机已经生成过SSH密钥,并且公钥已经保存到~/.ssh/id_rsa.pub文件中。如果本地主机还没有生成SSH密钥,可以使用ssh-keygen命令进行生成。使用方法如下:

ssh-keygen -t rsa

此命令会在~/.ssh目录下生成id_rsa和id_rsa.pub两个文件,其中id_rsa是私钥文件,id_rsa.pub是公钥文件。

使用ssh-copy-id命令后,可以在远程主机上查看授权文件,确认本地主机的公钥是否添加成功。授权文件通常位于远程主机的~/.ssh/authorized_keys文件中。

示例:

1. 客户端:生成公钥和私钥

[root@bogon shell]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:5lYOglv2UPFFOpZ7PpQOLZTpC9io9s8vM/YPBrOzS1M root@bogon
The key's randomart image is:
+---[RSA 2048]----+
|        .  .o    |
|         o *     |
|        . X      |
|     . = + + .   |
|    . B S E =    |
|     = * X O     |
|    +   O = +    |
|   . . +== . .   |
|      .o=Bo..    |
+----[SHA256]-----+
[root@bogon shell]# 
[root@bogon .ssh]# ll
ls: 无法访问du: 没有那个文件或目录
4.0K -rw-------. 1 root root 1.7K 7月  19 16:43 id_rsa
4.0K -rw-r--r--. 1 root root  392 7月  19 16:43 id_rsa.pub
4.0K -rw-r--r--. 1 root root  351 7月  19 16:38 known_hosts
[root@bogon .ssh]# cat id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA4zueHiBQ8IevSMf0DPm8+741gidrc0vJ/4K7TfTAgdp8LkCZ
8G8FTrSMbC/0gWWS4/0NdPBibTyLbcU27VLmv+WYhZ6bFEq+k20kmTR1X8lBYYIw
zeLoHLlYLOIDwCMepMTJqB4H2FpWFcWvW1t4iZACMRVOYxsg6Fz6NTrpeUpomFqH
b1z9U+SQboTsBwPsNtdnqowccNksMCrGpZ3hoqJ8MFbugXseTHDrBsRFR6FPwE/5
U4AekGMGr3aBpa265p2Ym7HzEzCXj0NF951f956RAT0GYfMsSF0bgvoCbHt+xKk4
0tQsRGt+nRGd1GBhBMX39+WM1qkLHo75Ru/ACIIDAQABAoIBAGdtjWzc/LpeqBQS
ny0Ax1o2m5hgZPIXvxvD34l+K9lvHzLWSLs9bUcDux7LPRlgqFmJpwRhHgvmkPgn
2fZv04Po92Fqbd/wnYnxFcV+MSamLlI5tgkgjNH2MwJK5bYgxiPtRnR1JtD9XU2P
q1+D5PuIRtccgY9um63oFCMCa56+ue4YWojmqJw/o4Xg13+GWwUbVrD5RhIje2P6
/EL29B2tqgVuNT/tRZmGKgtAhRHatxY+TtyLmoRJ/oxijdKOJt/BVDNTWKwhIB2c
rLA+wpXugte1NEO9a2WhpBy0YsVHmGlhsZI3mzMtj88gIsLUNIUzRETeDu3vl7os
iFHFD/ECgYEA+MMBTthZZ+mpRWNJK9KWKp/rObFHeHxHVFnBDQdvlej/h1W4GfjS
wDnG3/IfmZPMSlkDpY0yQaoRcnY7PN2u4jAPIPRBGjcdrjs1Am+bSmyqXYzYSCfG
K0+hO2O8fR429ET6w+Yv3KESyjIadmmaMivJNdeYDrjoZAb3g8WQqXMCgYEA6dg/
LY9U2+qmZeR0+w6IM351/ZGZKfEobSJPBBNQcVfSOn7twuNdVLHPabF3GQQtpcZo
nv8ucZvf05KGpp+OuDAyDqO4WiAunKaXG/Xldvn6Wy/xgTONoIBWUZb9IEyDjWzn
OhHtz+FWCS9AqwWVob+AL+NrYHT+CKdn7Ye18vUCgYAvmjlc2h+5t8fxhD9TSHf9
7h44KwlvL/ECXi6IDL04pZ6ISknxhmDl8ehxoEaVv+ee7ou5GVzdneq6yY8qZY16
sRGkD7mJh7SBS8koDy1bP5IWVsZogFv2m8VRtRMzqh1//tcxt5G/GX+b+5x+vlSI
d0KIsBnj71RhF8gzihHVqwKBgQCuvuhHVYqmZG1ASz6Xtb5WLLRjboA0dYAuPasq
cnx0lpoFGID4WAuQlOdYJkPHr/WkoeXgmvTL9R2H70EsFqQCRBHEGthSkSYD7gGR
5Wk6RYeuyN8CG9JEFGNsyRYTItpTvwPzwx4hcFRovKToqF2u53oVTy8Yf5SuRttF
B1sSWQKBgF6p58s5rRv0Qcy8hvne0QBldEmsKiU6d8Dkw7rFxtUTswnssPSPiuNy
Me8DhW94jHASy4ocBHtI6g0o/AKKT2cbqq9ksTxyOzzD5xhgjt6ZWlijMs3qQawM
/YAiA7sMcCfOOMhZmwExk+SZ0icyXJHMmArBiFW3ZxH73DSWtpIv
-----END RSA PRIVATE KEY-----
[root@bogon .ssh]#
[root@bogon .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDjO54eIFDwh69Ix/QM+bz7vjWCJ2tzS8n/grtN9MCB2nwuQJnwbwVOtIxsL/SBZZLj/Q108GJtPIttxTbtUua/5ZiFnpsUSr6TbSSZNHVfyUFhgjDN4ugcuV1wsgPAIx6kxMmoHgfYWlYVxa9bW3iJkAIxFU5jGyDoXPo1Oul5SmiYWodvXP1T5JBuhOwHA+w212eqjBxw2SwwKsalneGionwwVu6Bex5McOsGxEVHoU/AT/lTgB6QYwavdoGlrbrmnZibsfMTMJePQ0X3nV/3npEBPQZh8yxIXRuC+gJse37EqTjS1CxEa36dEZ3UYGEExff35YzWqQsejvlG7+EP root@bogon
[root@bogon .ssh]#

2. 客户端复制公钥,登录服务器,将公钥复制到远程服务器 


root@bogon:~# cd ~/.ssh
root@bogon:~/.ssh# ll
total 20
drwx------.  2 root root   80 Nov 23 11:19 ./
dr-xr-x---. 21 root root 4096 Dec 12 10:11 ../
-rw-r--r--.  1 root root  973 Nov 23 19:01 authorized_keys
-rw-------.  1 root root 1679 Nov 23 11:17 id_rsa
-rw-r--r--.  1 root root  392 Nov 23 11:17 id_rsa.pub
-rw-r--r--.  1 root root 1406 Nov 16 11:49 known_hosts
root@bogon:~/.ssh# vi authorized_keys
root@bogon:~/.ssh#

3. 客户端免密认证登录

[root@bogon .ssh]# ssh -i ~/.ssh/id_rsa root@192.168.28.169
Last login: Tue Dec 12 10:11:06 2023 from 192.168.7.239------ working ... ------\ | /- @ -/ | \/rootroot@bogon:~#
[root@bogon .ssh]# ssh-copy-id root@192.168.28.169
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed/usr/bin/ssh-copy-id: WARNING: All keys were skipped because they already exist on the remote system.(if you think this is a mistake, you may want to use -f option)[root@bogon .ssh]#

加密算法是一种将明文转化为密文的过程,常见的加密算法可分为对称加密算法和非对称加密算法两类。

  1. 对称加密算法 对称加密算法采用同一密钥对明文进行加密和密文进行解密,常见的对称加密算法有DES、3DES、AES、RC4等。其实现原理是通过对明文进行特定的数学运算,将其转化为密文,解密过程则是将密文通过相应的数学运算还原成明文。对称加密算法的应用场景主要是数据传输过程中需要保证通信双方安全的情况,如银行交易、电子邮件传输等。

  2. 非对称加密算法 非对称加密算法采用公钥和私钥两个密钥对明文进行加密和密文进行解密。常见的非对称加密算法有RSA、DSA、ECC等。非对称加密算法的实现原理是根据数学运算中的大数质因数分解、离散对数等难题,使得通过公钥加密的密文只能通过相应的私钥进行解密。非对称加密算法的应用主要是在数字签名、身份认证、数据加密等领域。

常见的加密算法包括:

  1. DES算法:是对称加密算法中的一种,采用64位密钥加密,应用场景主要是文件加密、数据加密等。

  2. RSA算法:是非对称加密算法中的一种,采用公钥和私钥对数据进行加密和解密,应用场景主要是数字签名、身份认证、电子邮件加密等。

  3. AES算法:是对称加密算法中的一种,比较常用,采用128位密钥,应用场景主要是网络通信、电子商务等。

  4. MD5、SHA-1等散列函数:用于对数据进行加密摘要,常用于数字签名和数据校验。

  5. ECC算法:是非对称加密算法中的一种,与RSA算法相比,可采用较短的密钥长度,提供更高的安全性。

总之,不同的加密算法适用于不同的应用场景,应根据实际场景进行选择和配置。

对称加密算法是一种加密方式,使用同一密钥进行加密和解密。在加密过程中,明文被加密成密文,密文可以通过同一密钥进行解密还原成明文。对称加密算法比非对称加密算法更加高效,因为它不需要使用复杂的数学运算,加密和解密的速度比较快。

对称加密算法,也称为共享密钥加密算法,因为在通信双方中,同一密钥需要被分享使用。在加密过程中,密钥需要保密,因此通信双方需要采取必要的措施来保证密钥安全。对称加密算法有很多种,其中最常见的算法包括DES(Data Encryption Standard)、3DES(Triple DES)、AES(Advanced Encryption Standard)等。

对称加密算法具有以下优点:

  1. 加密和解密速度较快;
  2. 实现简单;
  3. 适用于大量数据加密。

但对称加密算法也有一些缺点:

  1. 密钥需要在通信双方之间共享,因此密钥管理和分配会带来一定的安全风险;
  2. 无法提供数字签名和身份认证等安全性质。

非对称加密算法(也被称为公钥密码算法)是一种加密技术,它使用两个密钥来进行加密和解密操作,其中一个密钥被称为公钥(公开),另一个密钥被称为私钥(保密)。

在非对称加密算法中,公钥和私钥是成对生成的,它们之间有密切的关联。公钥可以被任何人使用来加密数据,但只有拥有相应私钥的人才能进行解密。因此,公钥可以在不安全的环境下公开,而私钥必须保密。

非对称加密算法的常见应用包括加密数据传输、数字签名和密钥交换。例如,当两个人需要进行加密通信时,他们可以使用对方的公钥来加密信息,只有对方才能使用自己的私钥进行解密。数字签名也是一种广泛使用非对称加密算法的技术,它可以验证发送方身份和消息完整性。在密钥交换中,双方可以使用非对称加密算法来协商一个共享密钥,从而实现对称加密。

常见的非对称加密算法包括RSA、Diffie-Hellman、Elliptic Curve Cryptography等。在安全性和效率方面,不同的算法有不同的表现,因此需要根据具体应用场景进行选择。

RSA是一种非对称加密算法,它是目前最常用的公钥密码算法之一。该算法的安全性基于大质数分解困难问题,即将一个大的合数分解成两个素数的乘积是一件极其困难的任务。RSA加密算法由三个关键步骤组成:密钥生成、加密和解密。

  1. 密钥生成 在RSA加密算法中,首先需要随机生成两个大质数p和q,并计算它们的乘积n=pq。然后选择一个整数e(1 < e < φ(n)),使得e与φ(n)互质,这里φ(n)表示n的欧拉函数,也就是小于n且与n互质的正整数个数。接着计算d,使得ed ≡ 1 mod φ(n)。最后,将(e, n)作为公钥,将(d, n)作为私钥。

  2. 加密 RSA加密算法使用公钥进行加密,对于明文M,将其转化为数字m,满足0 <= m < n。然后计算C ≡ m^e mod n,得到密文C。

  3. 解密 RSA加密算法使用私钥进行解密,对于密文C,计算m ≡ C^d mod n,得到明文m,并将其转化为字符串M。

RSA加密算法有许多优点,例如安全性高、可靠性强、可支持数据的加密和数字签名等应用。但同时它也有一些缺点,例如加密和解密的速度相对较慢,且密钥较长,会影响算法的效率和性能。因此,在实际应用中,需要根据具体情况选择合适的加密算法。

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

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

相关文章

基于ssm的疫情物质管理系统论文

摘 要 进入信息时代以来&#xff0c;很多数据都需要配套软件协助处理&#xff0c;这样可以解决传统方式带来的管理困扰。比如耗时长&#xff0c;成本高&#xff0c;维护数据困难&#xff0c;数据易丢失等缺点。本次使用数据库工具MySQL和编程技术SSM开发的疫情物资管理系统&am…

离线运行Oracle Database In-Memory Advisor

概念 离线运行Oracle Database In-Memory Advisor&#xff0c;就是不在生产系统上运行。这样可以避免影响生产系统。但需要从生产系统导出以下的数据&#xff1a; AWR DumpAWR补充数据 过程 导出AWR Dump 连接到CDB root运行。 SQL> connect / as sysdba SQL> ?/r…

全能数据分析软件Tableau Desktop 2019 mac功能亮点

Tableau Desktop 2019 mac是一款专业的全能数据分析工具&#xff0c;可以让用户将海量数据导入并记性汇总&#xff0c;并且支持多种数据类型&#xff0c;比如像是编程常用的键值对、哈希MAP、JSON类型数据等&#xff0c;因此用户可以将很多常用数据库文件直接导入Tableau Deskt…

光栅化渲染:优化技巧

我们在前面的章节中介绍的所有技术都是光栅化算法的基础。 不过&#xff0c;我们只是以非常基本的方式实现了这些技术。 GPU 渲染管道和其他基于光栅化的生产渲染器使用相同的概念&#xff0c;但它们使用这些算法的高度优化版本。 展示用于加速算法的所有不同技巧远远超出了介绍…

富时中国a50指数期货:探寻涨跌脉络

富时中国A50指数期货是衡量中国大陆50家最具代表性上市公司的指数。作为衍生品交易市场的重要一环&#xff0c;A50指数期货是投资者关注的焦点之一。其涨跌走势直接反映了中国大陆股市的整体表现和投资者情绪。 A50指数期货简介 富时中国A50指数期货由新加坡交易所&#xff0…

免费且好用的 MySQL 客户端

DBeaver 支持 Mac、Windows、Linux&#xff0c;提供 Eclipse 插件。社区版免费&#xff0c;支持主流的关系型数据库 官网地址&#xff1a;DBeaver Community | Free Universal Database Tool MySQL WorkBench MySQL WorkBench 是官方出品的客户端&#xff0c;支持 Mac、Windo…

AntDB数据库参加ACDU中国行杭州站,分享数据库运维实践与经验

关于ACDU与中国行&#xff1a; ACDU是由墨天轮社区举办的中国数据库联盟的品牌活动之一&#xff0c;在线下汇集数据库领域的行业知名人士&#xff0c;共同探讨数据库前沿技术及其应用&#xff0c;促进行业发展和创新的平台&#xff0c;也为开发者们提供友好交流的机会。 AntD…

SpringCloud微服务(简略笔记二)

Docker 概念 docker和虚拟机的差异 * docker是一个系统进程&#xff1b;虚拟机是在操作系统中的操作系统 * docker体积小&#xff0c;启动速度&#xff0c;性能好&#xff0c;虚拟机体积大&#xff0c;启动速度慢&#xff0c;性能一般 镜像和容器 镜像&#xff08;image&…

使用 Python 实现简单的爬虫框架

爬虫是一种自动获取网页内容的程序&#xff0c;它可以帮助我们从网络上快速收集大量信息。在本文中&#xff0c;我们将学习如何使用 Python 编写一个简单的爬虫框架。 一、请求网页 首先&#xff0c;我们需要请求网页内容。我们可以使用 Python 的 requests 库来发送 HTTP 请…

【STM32F103】ADC 模拟数字转换器

ADC ADC&#xff08;Analog-to-Digital Converter&#xff09;&#xff0c;模拟-数字转换器&#xff0c;也叫模数转换器&#xff0c;可以将连续变化的模拟信号转换为离散的数字信号。 我们可以外接上将采集信号转为模拟信号的模块&#xff0c;如光敏电阻传感器&#xff0c;热…

仓库拣货应用案例

多个订单的光挑选 PTL用于WIP&#xff08;正在工作&#xff09;机架 首先&#xff0c;我们的过程。 制造工厂很大&#xff0c;有大量的制造工具&#xff0c;非常密集&#xff0c;而且大量的高设备可能会阻碍无线电 晶片储存在一个密封的载体中&#xff0c;它们从一台机器运输…

Windows CMD cd命令无法使用,路径无法更改解决方法

故障表现&#xff1a; 1.cmd使用命令cd更改路径后&#xff0c;路径仍然显示为初始路径 解决方法&#xff1a; 1.先更改至指定盘符&#xff0c;再使用cd命令 2.使用cd命令后&#xff0c;再更改至指定盘符

35.@Component, @Controller, @Repository, @Service 有何区别

@Component, @Controller, @Repository, @Service 有何区别 @Component:这将 java 类标记为 bean。它是任何 Spring 管理组件的通用构造型。spring 的组件扫描机制现在可以 将其拾取并将其拉入应用程序环境中。@Controller:这将一个类标记为 Spring Web MVC 控制器。标有它的…

GO EASY 游戏框架 之 GRPC 扩展篇 04

1 Overview 此章节是对第三章的一个补充。同样属于RPC的篇章。是专门为了类似游戏服务这种需要指定RPC服务端具体地址&#xff0c;也就是具体是哪台机器的某应用进程&#xff0c;通信的方式。笔者简单的封装了下保证基本的服务稳定&#xff0c;且具备服务发现的属性即可&#…

[C++进阶]---AVL树模拟实现

目录 1.AVL树的概念2.AVL树模拟实现2.1AVL树节点的定义2.2AVL的插入2.3AVL树的旋转2.3.1左单旋2.3.2右单旋2.3.3右左双旋2.3.3.1旋转情况分析2.3.3.2平衡因子更新分析 2.3.4右左双旋2.3.4.1旋转情况分析2.3.4.2平衡因子更新分析 2.3.5AVL树的验证 3.AVL模拟实现源码4.总结 1.AV…

jetpack compose 学习(2)

jetpack compose 学习(1) 学会了如何创建一个compose项目,并成功run了起来 今天学习run起来的界面配置 找启动界面,当然是先找到界面的配置文件: androidManifest.xml 这个文件,然后通过启动项找到主界面, 第二步 按住ctrl 鼠标指向MainActivity 即可跳转主界面 进入后的界面…

_try_finally原理探究

无论try结构体中是什么代码&#xff0c;都会执行finally里面的代码 局部展开 当try里面没有异常&#xff0c;而是return、continue、break等语句时&#xff0c;就不会走_except_handle3这个函数&#xff0c;而是调用_local_unwind2进行展开 然后调用[ebx esi*4 8] 跟进去就到…

MySQL低版本中:字符串中的数字、英文字符、汉字提取

我们如何提醒一个字段中的汉字和数字呢 高版本指mysql8.0以上 使用sql语句 SELECT REGEXP_REPLACE(column_name, [^\\p{Han}], ) AS chinese_characters FROM table_name;其中 column_name指名称列&#xff0c;table_name是表名 2.低版本使用 需要新建函数 DELIMITER $$DR…

Java调用百度翻译API和调用有道翻译API进行翻译

目录 界面编写 调用百度API 调用有道API 源代码 界面编写 我们首先需要设计出这个翻译程序的GUI界面&#xff0c;我们写一个类继承自JFrame类&#xff0c;用来展示程序的主窗口&#xff0c;设置好窗口的名称和大小&#xff0c;设置在关闭窗口时终止程序&#xff0c;为了界…

高效数组处理的Numpy入门总结

NumPy是Python中一个重要的数学库&#xff0c;它提供了高效的数组操作和数学函数&#xff0c;是数据科学、机器学习、科学计算等领域的重要工具。下面是一个简单的NumPy学习教程&#xff0c;介绍了NumPy的基本用法和常用函数。 安装NumPy 在使用NumPy之前&#xff0c;需要先安…