SSH 身份验证序列和密钥文件:解释

SSH 身份验证序列和密钥文件:解释

作为使用 SSH 和 rsync 与密钥对解决各种问题的背景,我希望直接概述 SSH 身份验证期间发生的事件序列,以及各个客户端和主机文件如何发挥作用。

Google 发现很多解释都比较详细,要么范围太窄,要么范围太广,但充斥着这些细节。更不用说很多不正确或混乱的解释和论坛帖子了。

我最终创建了几个图表来澄清两件事:

  • 准备使用密钥进行 SSH 通信需要哪些文件和操作
  • 这些文件在建立连接过程中起什么作用。

我将在下面的答案中发布这些内容。

答案1

以下答案解释了使用公钥-私钥对(“公钥基础设施”或“PKI”)准备 ssh 身份验证所需的文件,以及在实际 ssh 会话期间如何使用这些文件。这里的一些细节使用适用于 Linux 的名称和目录,但这些原则适用于所有使用与之并行的程序和文件的平台。主要感兴趣的功能是:

  • 用户机器
    • 用户密钥对:公共和私有,客户端用户必须使用 ssh-keygen 创建,创建具有如下名称的文件:
      • 〜/.ssh /id_rsa (私人)和
      • 〜/.ssh /id_rsa.pub (民众)
      • 在准备过程中,必须提供给主人授权密钥文件
    • 〜/.ssh /已知主机
      • 如果用户在首次登录时接受,它将从服务器接收公钥。
  • 主机(服务器)
    • 主机密钥对:公立和私立
      • 在某些时候会自动创建,例如在服务器上安装 openssh。典型名称:
      • /etc/ssh/ssh_主机名_rsa_key (私人的)
      • /etc/ssh/ssh_主机_rsa_密钥.pub (民众)
      • 客户端用户首次尝试使用 ssh 连接时,主机会向客户端用户提供公钥。客户端会将主机的密钥存储在已知主机
    • 〜/.ssh /授权密钥
      • 在准备过程中,必须提供每个将要登录的用户的公钥。
  • 事件顺序在实际的 SSH(或 rsync)会话中,显示文件的参与方式。

(请注意,有两种不同的常见签名算法,RSA 和 DSA,因此在本讨论中使用“rsa”的地方,可能会出现字符串“dsa”。)

配置/准备 在此处输入图片描述

SSH 连接及使用 在此处输入图片描述

我希望这些图表能够有所帮助。

相关内容