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

ssh中公钥和私钥是具体作用,以及通俗解释

在SSH(Secure Shell)中,公钥和私钥主要用于安全认证和加密,确保远程登录和数据传输的安全性。它们是一对密钥,通常用于公钥加密系统,这是非对称加密的一种形式。下面是它们的作用和通俗解释:

### 作用:

1. **身份验证**:SSH使用公钥和私钥来验证用户身份,无需使用密码。用户拥有私钥,而公钥存储在远程服务器上。

2. **数据加密**:SSH使用这些密钥来加密通过网络传输的数据,确保数据在传输过程中的安全性。

### 通俗解释:

想象一下,你有一个非常特别的秘密盒子(远程服务器),只有你能打开它。为了安全地打开这个盒子,你需要两把钥匙:

- **公钥**:这是一把可以公开的钥匙,就像你家门上的锁孔,任何人都可以试图用钥匙来开锁,但是只有正确的钥匙才能打开它。在SSH中,公钥被放置在远程服务器上,服务器使用它来验证尝试连接的客户端是否拥有匹配的私钥。

- **私钥**:这是一把必须保密的钥匙,就像你家门上的钥匙,只有你拥有它,而且你不会把它给别人。在SSH中,私钥保存在用户的本地计算机上,用户使用它来证明自己的身份,以便能够连接到远程服务器。

当你想要打开秘密盒子时,你不需要告诉任何人你的私钥(实际的钥匙),你只需要证明你拥有它。你可以通过一种特殊的方法(加密和解密)来证明你拥有私钥。如果你能成功证明(通常是通过SSH客户端自动完成的),盒子就会打开,允许你访问里面的东西(登录到远程服务器)。

这种方式的好处是,即使有人偷走了你的公钥(因为公钥本来就是公开的),他们也无法打开盒子,因为他们没有你的私钥。这样,你的数据和远程服务器都得到了很好的保护。
 

如果你想让别人访问你的远程服务器,但又不想分享你的私钥,你可以采取以下步骤:

1. **生成新的密钥对**:让想要访问服务器的人在自己的计算机上生成一对新的SSH密钥(公钥和私钥)。这通常可以通过使用`ssh-keygen`命令来完成。

2. **分享公钥**:这个人将他们的公钥发送给你。公钥是可以安全分享的,因为它不包含任何敏感信息。

3. **添加公钥到服务器**:你将这个人的公钥添加到远程服务器上的`~/.ssh/authorized_keys`文件中。这个文件存储了所有被授权访问服务器的用户的公钥。

4. **设置权限**:确保`~/.ssh`目录和`authorized_keys`文件的权限设置正确,以防止未授权访问。通常,目录的权限应该是700(只有所有者可以读写执行),文件的权限应该是600(只有所有者可以读写)。

5. **连接**:现在,这个人可以使用他们的私钥来通过SSH连接到你的远程服务器。当他们尝试连接时,服务器会检查他们的公钥是否在`authorized_keys`文件中,如果是,服务器就会允许他们登录。

这样,你就可以安全地允许特定的人访问你的远程服务器,而不需要分享你的私钥。每个人都使用自己的私钥来访问服务器,而他们的公钥被存储在服务器上用于验证。这种方法既安全又方便,因为你不需要记住或输入密码,也不需要担心密码泄露的问题。
 


http://www.kler.cn/a/388538.html

相关文章:

  • RAG综述:《A Comprehensive Survey of Retrieval-Augmented Generation (RAG)》
  • Chromium 中MemoryMappedFile使用例子c++
  • NVIDIA NIM 简介
  • 回归分析学习
  • 算法训练(leetcode)二刷第二十三天 | 455. 分发饼干、*376. 摆动序列、53. 最大子数组和
  • Java-Redisson分布式锁+自定义注解+AOP的方式来实现后台防止重复请求扩展
  • JavaSecLab靶场搭建
  • JavaWeb:文件上传1
  • (Go基础)变量与常量?字面量与变量的较量!
  • 微信小程序官方评价组件wxacommentplugin下线后如何巧妙调用
  • 【网络原理】关于HTTP状态码以及请求的构造的哪些事
  • 扁平化在APP设计领域成了过眼云烟,3D拟物化又开始回归了。
  • WPF中的依赖属性
  • 「QT」几何数据类 之 QSizeF 浮点型尺寸类
  • 14、NAT和桥接区别
  • STM32F405RGT6单片机原理图、PCB免费分享
  • 智慧城市路面垃圾识别系统产品介绍方案
  • 学习记录:js算法(九十):N皇后
  • Spring Boot 的核心注解
  • SH3001六轴 学习1
  • 【Vue】-组件开发
  • 【Vue】Vue3.0(十八)Vue 3.0中‘props‘一种使用频率最高的通信方式(全面解析)
  • MML 中使用 libevent +std::async unix socket domain 进程间通信
  • RT-Thread 配置工具
  • 英国留学论文写作中复合句式基础知识讲解
  • 算法复杂度