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

gwi*_*man 5 ssh pki ssh-keys

作为使用带密钥对的 SSH 和 rsync 解决各种问题的背景,我想要一个简单的概述,了解 SSH 身份验证期间发生的事件序列,以及几个客户端和主机文件中的每一个如何发挥作用。

谷歌发现了很多细节层次的解释,要么范围狭窄,要么范围广泛,细节混乱。更不用说许多不正确或混乱的解释和论坛帖子。

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

  • 准备使用密钥进行 SSH 通信时涉及哪些文件和操作
  • 这些文件在建立连接的过程中会做什么。

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

gwi*_*man 7

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

  • 用户机器
    • 用户密钥对:公共和私有,客户端用户必须使用 ssh-keygen 创建,创建具有以下名称的文件:
      • ~/.ssh/ id_rsa (私有)和
      • ~/.ssh/ id_rsa.pub (公共)
      • 在准备中,必须给主机的authorized_keys文件
    • ~/.ssh/ known_hosts
      • 它从服务器接收公钥,如果用户在第一次登录时接受它。
  • 主机(服务器)机器
    • 主机密钥对:公共和私有
      • 在某些时候自动创建,比如在服务器上安装 openssh。典型名称:
      • /etc/ssh/ ssh_host_rsa_key (私有)
      • 的/ etc / SSH / ssh_host_rsa_key.pub (公共)
      • 客户端用户第一次尝试与 ssh 连接时,主机将公钥提供给客户端用户。客户端将主机的密钥存储在known_hosts 中
    • ~/.ssh/ authorized_keys
      • 在准备过程中,必须提供每个将登录的用户的公钥。
  • 实际 SSH(或 rsync)会话中的事件序列,显示文件的参与方式。

(请注意,有两种不同的通用签名算法,RSA 和 DSA,因此本讨论使用“rsa”时,可以使用字符串“dsa”代替。)

配置/准备 在此处输入图片说明

SSH连接和使用 在此处输入图片说明

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

  • 谢谢。经过大量搜索,这是我发现的最清晰的解释,考虑到了所有涉及的文件。 (3认同)