ssh的认证过程,以及自己生成密钥对和目标服务器生成密钥对分别是什么以及他们的区别

SSH认证过程

SSH(Secure Shell)认证是一种安全协议,主要用于在客户端与服务器之间建立加密通信通道,确保数据的安全传输。其认证机制包括密码认证和密钥对认证。


SSH 密钥对认证过程(自己生成密钥对)

基于 非对称加密 的密钥对认证流程如下:

  1. 生成密钥对:(通过 ssh-keygen 等工具)
    • 一对密钥包含 公钥私钥
      • 公钥:公开,用于加密或验证身份。
      • 私钥:保密,用于解密或生成签名。
  2. 服务器存储公钥
    • 公钥被放置在目标服务器的 ~/.ssh/authorized_keys 文件中。
  3. 客户端发起连接
    • 客户端通过 SSH 工具向服务器发起连接,提供用户名。
  4. 服务器发送加密挑战
    • 服务器生成一个随机数(挑战信息),用客户端的公钥加密后发送。
  5. 客户端解密并响应
    • 客户端使用本地保存的私钥解密随机数,并返回解密结果。
  6. 服务器验证响应
    • 服务器验证解密后的结果是否匹配原始随机数,确认客户端拥有对应私钥。
  7. 认证通过,建立连接

目标服务器生成密钥认证过程

以下是oracle密钥对认证的基本过程:

  1. 生成密钥对: Oracle 云平台为你生成了一对公钥和私钥,并将公钥自动配置在目标服务器上。
  2. 客户端发起连接: 客户端(你)使用私钥发起 SSH 连接到 Oracle 云服务器。
  3. 服务器验证身份
    • 服务器检查你的公钥是否已经存储在它的 ~/.ssh/authorized_keys 文件中。
    • 如果找到匹配的公钥,服务器会生成一个随机数(挑战信息),用它的私钥对该信息加密后发送给客户端。
  4. 客户端响应验证
    • 客户端使用本地保存的私钥解密服务器的随机信息,并将解密结果发送回服务器。
    • 如果解密结果正确,说明客户端拥有私钥,服务器便授予访问权限。


自己生成密钥对与目标服务器生成密钥对的区别

特性自己生成密钥对目标服务器生成密钥对
密钥生成地点在客户端本地生成(通过 ssh-keygen 等工具)。在目标服务器生成,并由服务器提供私钥给用户。
公钥存储位置手动上传到服务器的 ~/.ssh/authorized_keys 文件中。服务器直接将生成的公钥存储到 ~/.ssh/authorized_keys 中。
私钥存储位置本地客户端保管,绝不与他人分享。服务器生成后提供给用户,由用户下载并妥善保管。
安全性私钥从未离开本地设备,更加安全。私钥生成后需通过网络传输到用户设备,有泄露风险。
配置复杂度需要手动上传公钥到目标服务器,步骤稍复杂。服务器预配置好公钥,用户只需下载私钥即可使用。
适用场景适用于大多数用户和系统管理员,需要更多控制权。适用于云服务商(如 Oracle),方便用户快速访问。

两种方式的认证流程对比

1. 自己生成密钥对

  • 流程
    1. 客户端运行 ssh-keygen 生成密钥对。
    2. 将公钥(如 id_rsa.pub)上传到服务器的 ~/.ssh/authorized_keys
    3. 服务器通过公钥验证客户端。
  • 优点
    • 私钥从未离开本地,安全性更高。
    • 客户端完全掌控密钥生成和管理。

2. 目标服务器生成密钥对

  • 流程
    1. 服务器生成密钥对,并将公钥自动配置到 ~/.ssh/authorized_keys
    2. 服务器将私钥(如 oracle-key.pem)提供给用户。
    3. 客户端使用私钥进行连接。
  • 优点
    • 简化配置,适合云服务的快速部署。
    • 用户无需手动上传公钥到服务器。

选择哪种方式?

需求推荐方式
安全性最高自己生成密钥对,本地私钥永不外传。
快速使用云服务使用目标服务器生成密钥对。
管理多个客户端或用户自己生成密钥对,方便密钥分发和权限管理。

总结

  1. 自己生成密钥对
    • 私钥永远不离开本地,安全性更高。
    • 手动上传公钥到服务器后,可完成认证。
  2. 目标服务器生成密钥对
    • 简化云服务器初次配置,快速使用。
    • 私钥由服务器生成后传给用户,存在私钥泄露的潜在风险。

如果需要更高的安全性和灵活性,推荐使用自己生成密钥对的方式。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇