公钥私钥详细讲解(小白都能看懂),SSH密钥远程连接服务器,代码,命令详解 您所在的位置:网站首页 怎么知道电脑的密钥是什么密码 公钥私钥详细讲解(小白都能看懂),SSH密钥远程连接服务器,代码,命令详解

公钥私钥详细讲解(小白都能看懂),SSH密钥远程连接服务器,代码,命令详解

2024-07-10 06:00| 来源: 网络整理| 查看: 265

公钥及私钥

公钥和私钥是非对称加密技术中的两个关键组成部分,它们是一对配对的密钥,用于加密和解密信息,确保信息传输的安全性。下面我将详细解释公钥和私钥的概念、用法和使用流程,并用现实生活中的例子来帮助理解。

公钥和私钥的基本概念

- 公钥(Public Key):可以公开分享的密钥,用于加密信息或验证数字签名。 - 私钥(Private Key):必须保密的密钥,用于解密信息或创建数字签名。

使用流程

1. 密钥对生成:    - 就像你拥有一个邮箱,你需要一把钥匙来打开它。在加密世界中,这把钥匙分为两部分:一把可以复制并随意分发的公钥,和一把只有你知道的私钥。    - 你使用特定的软件或命令生成一对密钥,比如使用`ssh-keygen`生成SSH密钥对。

2. 公钥分享:    - 你将公钥分享给需要与你安全通信的人,就像你告诉朋友你的邮箱地址,他们可以给你发送信件。    - 在现实生活中,这可以通过电子方式(如电子邮件)或物理方式(如写在纸上)进行。

3. 信息加密:    - 当别人想要给你发送加密信息时,他们使用你的公钥来加密信息,确保只有拥有对应私钥的你能够解密。    - 类似地,如果你收到一封加密的信件,你需要用你的私钥(邮箱钥匙)来打开它。

4. 信息解密:    - 你使用私钥解密收到的信息,恢复原始内容。    - 就像你用钥匙打开邮箱,取出里面的信件。

5. 数字签名:    - 为了证明信息确实是你发送的,你可以使用私钥对信息进行数字签名。    - 类似地,你给信件签名,收信人通过你的公钥验证签名,就像验证信件上的签名是否为你的笔迹。

6. 签名验证:    - 收信人使用你的公钥来验证数字签名,确认信息的真实性和完整性。    - 就像收信人通过对比签名和已知的你的笔迹来确认信件确实是你写的。

现实生活举例

假设你要寄送一封重要的信件给朋友,而这封信件包含敏感信息。你可以采取以下步骤:

1. 生成密钥对:    - 你在家里制作了一对密钥,一把是私钥,你妥善保管;一把是公钥,你可以随意分发。

2. 分享公钥:    - 你把公钥放在一个显眼的地方,比如社交媒体或通过电子邮件发送给朋友,告诉他们这是你的公钥。

3. 朋友加密信息:    - 你的朋友想要给你发送一封加密的信件,他们使用你的公钥对信件内容进行加密,然后将加密后的信件放入信封,邮寄给你。

4. 解密信息:    - 收到信件后,你使用你的私钥打开信封,阅读信件内容。

5. 发送回信:    - 你也想给朋友发送一封加密的回信,你使用你的私钥对信件内容进行加密,然后用朋友的公钥再次加密,确保只有朋友能解密。

通过这个过程,你和朋友能够安全地交换信息,即使信件在邮寄过程中被拦截,没有正确的私钥,拦截者也无法阅读信件内容。这就是公钥和私钥在现实生活中的一个类比例子。

SSH密钥访问服务器 使用cmd生成密钥并连接服务器

1.win+r输入cmd打开终端

2.输入ssh-keygen -N passwd        生成密钥并指定私钥密码

查看密钥路径,上传公钥到目标服务器指定路径并进行ssh密钥登录 

使用 MobaXterm本地终端生成密钥并连接服务器 删除现有密钥对防止干扰,并生成新的密钥对

 验证生成成功并上传到目标主机

 使用密钥进行访问

私钥地址:C:\Users\Administrator\OneDrive\文档\MobaXterm\home\.ssh\id_rsa

根据moba情况进行调节

连接过程讲解

密钥认证机制:SSH协议支持多种认证方式,其中之一就是基于公钥/私钥的密钥认证。在这种机制下,客户端(你的本地计算机)拥有一个私钥,而服务器拥有与之配对的公钥。

信任关系建立:当你使用ssh-copy-id将公钥上传到服务器时,你实际上是在告诉服务器:“我有一个与之配对的私钥,当你看到用这个公钥加密的信息时,你可以放心地用这个公钥解密,因为只有我有对应的私钥。”这样,服务器就建立了对你私钥的信任关系。

连接时的身份验证:当你尝试通过SSH连接到服务器时,服务器会要求你证明你拥有匹配的私钥。这是通过一个挑战-响应的过程完成的,服务器会发送一个随机生成的挑战值(challenge),你的客户端需要使用私钥对这个挑战值进行加密,然后将加密后的响应发送回服务器。

服务器验证:服务器收到加密后的响应后,会使用你的公钥进行解密,得到原始的挑战值。然后,服务器将这个值与自己生成的挑战值进行比较。如果两个值相匹配,服务器就确认了你拥有正确的私钥,从而验证了你的身份。

建立连接:一旦身份验证成功,服务器就会允许你建立SSH连接,允许你访问服务器上的资源

命令解析

`ssh-keygen`是一个用于生成、管理和转换SSH公钥/私钥对的命令行工具

基本语法

ssh-keygen [options] [file]

ssh-keygen:命令本身。 [options]:可选参数,用于指定不同的配置和行为。 [file]:指定生成的密钥文件名。如果不指定,默认生成两个文件:一个私钥和一个公钥。

常用选项

-A:生成所有可能的主机密钥对。 -b bits:指定密钥的位数,默认是2048位。 -C "comment"`:为密钥添加注释,通常用于标识密钥的用途或所有者。 -E:指定椭圆曲线加密算法。 -f:指定密钥文件的保存路径。 -N:为密钥设置密码。 -t:指定密钥类型,如`rsa`、`dsa`、`ecdsa`、`ed25519`等。 -y:从私钥中提取公钥。

代码演示 生成密钥对

1. 打开终端

2. 运行ssh-keygen命令:输入ssh-keygen命令并按回车键

ssh-keygen -t rsa -b 4096 -C "Your Name"

这个命令会生成一个4096位的RSA密钥对,并添加一个注释"Your Name"。

3. 指定密钥保存位置:系统会提示输入文件名来保存新的密钥。如果不输入任何内容并按回车键,密钥将被保存在默认位置`~/.ssh/id_rsa(私钥)和`~/.ssh/id_rsa.pub(公钥)。

Enter file in which to save the key:

4. 设置密钥密码:系统会询问是否要为密钥设置密码。这是可选的,建议设置以增加安全性。

Enter passphrase (empty for no passphrase):

将公钥上传到服务器

生成密钥对后,需要将公钥上传到远程服务器,以便SSH服务可以使用它来验证身份。通过`ssh-copy-id`命令进行上传: ssh-copy-id user@hostname

user:远程服务器上的用户名。 hostname:远程服务器的地址。

这个命令会自动将公钥复制到远程服务器的`~/.ssh/authorized_keys`文件中。

使用密钥进行SSH连接

一旦公钥被添加到远程服务器,就可以使用SSH连接到服务器,而不需要输入密码: ssh -i ~/.ssh/id_rsa user@hostname

-i:指定私钥文件的路径。 user:远程服务器上的用户名。 hostname:远程服务器的地址。

如果在生成密钥时设置了密码,系统会提示输入。

修改ssh配置文件禁止用户使用密码进行登录

root@metasploitable:~# vim /etc/ssh/sshd_config

50    PasswordAuthentication no                                  //禁止SSH使用密码登录

root@metasploitable:~# /etc/init.d/ssh restart            //重启ssh服务 * Restarting OpenBSD Secure Shell server sshd            [ OK ]



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有