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

news/2024/7/7 20:26:38

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 ... ------

 \ | /
 - @ -
 / | \

/root

root@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://lihuaxi.xjx100.cn/news/1885970.html

相关文章

【头歌系统数据库实验】实验9 SQL视图

目录 第1关&#xff1a;请为三建工程项目建立一个供应情况的视图V_SPQ&#xff0c;包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY) 第2关&#xff1a;从视图V_SPQ找出三建工程项目使用的各种零件代码及其数量 第3关&#xff1a;从视图V_SPQ找出供应商S1的供应情况 第4…

【Linux系统编程】代码调试工具gdb

介绍&#xff1a; gdb是一个非常强大的调试工具&#xff0c;在gdb下&#xff0c;我们可对编写的代码进行各种调试&#xff0c;找出其中的bug&#xff0c;但是需注意的是&#xff0c;此工具调试与VS编译器的调试道理相同&#xff0c;只有在debug版本下才可以被调试&#xff0c;在…

Goby 漏洞发布| 亿赛通电子文档安全管理系统 LinkFilterService 接口权限绕过漏洞

漏洞名称&#xff1a;亿赛通电子文档安全管理系统 LinkFilterService 接口权限绕过漏洞 English Name&#xff1a;Esafenet Electronic Document Security Management System LinkFilterService API Permission Bypass Vulnerability CVSS core: 9.3 影响资产数&#xff1a;…

Python核心编程之映射和集合类型

目录 一、映射类型:字典 核心笔记:什么是哈希表?它们与字典的关系是什么?

数据库中常用的锁

目录 1、数据库中常用的锁类型 2、常见的数据库 3、以MySQL为例 3.1 MySQL的事务 3.2 MySQL事务的四大特性 1. 原子性&#xff08;Atomicity&#xff09; 2. 一致性&#xff08;Consistency&#xff09; 3. 隔离性&#xff08;Isolation&#xff09; ⭐mysql中的事务隔…

unity Pc获取本机Mac地址

1.此方法只能获取众多Mac中的一个 private static string GetMacAddress(){string physicalAddress "";NetworkInterface[] nice NetworkInterface.GetAllNetworkInterfaces();foreach (NetworkInterface adaper in nice){Debug.Log(adaper.Description);if (adape…

2台MySQL 8.0快速配置主从同步

在MySQL 8.0中设置主从同步&#xff0c;并启用GTID&#xff08;全局事务标识符&#xff09;&#xff0c;可以按照以下详细步骤进行&#xff1a; 1. 准备主服务器 编辑MySQL配置文件&#xff08;通常是my.cnf或my.ini&#xff09;&#xff1a; [mysqld] server-id 1 log_bin …

使用 array_filter 对数据进行处理

目标格式&#xff1a; 目前的格式: 使用 array_filter 对数据进行处理 &#xff1a; public function teamOrderDetail($goodId){$goodIds explode(,,$goodId);$data [];foreach ($goodIds as $id){$data[] $this->order->where(good_id,$id)->field("user_…