我想要/不想要的

我想要/不想要的

我使用公钥/私钥对已经很长时间了。几乎与此同时,我一遍又一遍地问自己,我应该使用哪种文件扩展名。似乎至少对于公钥和私钥(openssh)来说,根本没有约定?

我的意思是,在 PuTTy 中有一个特殊的扩展.ppk名“PuTTy 私钥”,公钥要么不带扩展名存储,要么带扩展名存储.pub。我个人不喜欢使用扩展.pub名,因为 Microsoft 已经在 MS Publisher 中使用了这个扩展名。因此,对于 PuTTy,我将两个密钥存储为相同的名称,并添加.ppk到私钥中,而不添加到公钥中。对于这种情况,我可以接受。我可以识别哪个密钥是公钥,哪个是私钥,并且私钥仅适用于 PuTTy。

但是我应该如何处理私有的 openssh 密钥?直接存储而不使用扩展名?或者使用类似的东西.openssh?此外,如果真的没有惯例,如果有人只是想到这一点并为自己理清某种概念,我也会很感激...

提前致谢!

答案1

首先,密钥的命名实际上没有官方惯例。文件名并不重要。它们只对你很重要,因为你必须管理它们。软件只关心文件的内容。

话虽如此,OpenSSH 密钥文件只是文本文件,因此您可以使用扩展名来命名它们.txt

我通常只是遵循工具使用的惯例ssh-keygen,即私钥为id_{key_algorithm}(即id_rsa或),公钥为私钥名称 + (或)。如果我需要保留多个密钥,我会在名称末尾添加一个额外的标识符,这样我就可以得到像和 这样的名称。id_dsa.pubid_rsa.pubid_dsa.pubid_rsa_myhostid_rsa_myhost.pub

答案2

所以我想到了一些命名概念现在变成了这样。我知道 PuTTy 中除了 (PuTTy Private Key) 之外没有其他约定.ppk- 所以这不是“你必须这样做”,这更像是命名概念应该是什么样子。所以我还是想和你们分享一下——也许它至少能帮助一些人建立自己的概念。

我想要/不想要的

  • 我想使用 OpenSSH 和 PuTTy 密钥对
  • 我希望钥匙能够立即被识别,并且不会混淆——因此我想识别
    • 算法
    • 它是私钥还是公钥
    • 如果它是 OpenSSH 或 PuTTy 格式
  • 我想要的名字是 Windows 和 Unix“兼容/合规”(例如,我不希望 Linux 中有空格 - 即使这不是官方政策)
  • 如果发生任何事情(可能是某种安全问题),我不想更改所有服务器上的所有密钥,所以我可能会
    • 不想在多台服务器上使用相同的密钥对
    • 只想将密钥对用于一个目的(例如目的可以是用户、服务或任务)

因此,名称应包含以下信息:

  • 目的信息(例如用户名或任务名)
  • 服务器名称(如果它是服务器特定密钥)
  • 算法
  • 它是私钥还是公钥?
  • 它是OpenSSH还是PuTTy格式?

可能的命名方案

作为重型提到,我认为坚持使用ssh-keygen工具的语法确实是一个好主意。所以我使用这个(除了.pub公钥,因为这个文件扩展名由 Microsoft Publisher 使用,在 Windows 系统上可能会被错误解释 - MS Publisher 也有自己的图标)并将其与 PuTTy 的约定(.ppk)和上述条件相结合。因此,可能的名称方案可能是:

id_<key_algorithm>_<servername>_<purpose>.<format_information>

遵循以下规则:

  • 如果不是针对特定服务器,请删除<servername>
  • 如果不是为了特定目的,请删除<purpose>
  • 名称中必须包含至少一个信息(<purpose>或)<servername>

格式信息(OpenSSH/PuTTy 和 private/public)

PuTTy 用于.ppk私钥,而ssh-keygen工具自带的用于.pub公钥,由于 MS Publisher,我不想使用公钥。因此我坚持使用 PuTTys ,与s.ppk略有不同,并且两者都使用ssh-keygen.pub“约定”作为构建与此名称接近的其他名称的基础。因此,此信息被添加为“文件扩展名”

Name of OpenSSH private key:  .pk        an alternative could be .opk or   .ospk
Name of OpenSSH public key:   .pubk      an alternative could be .opubk or .ospubk
Name of PuTTY private key:    .ppk
Name of PuTTy Public Key:     .ppubk

一些例子:

id_rsa_foo_bar.ppk
id_dsa_foo.pk

id_rsa_server01_rsync.pk
id_rsa_server01_rsync.pubk
id_rsa_server01_rsync.ppk
id_rsa_server01_rsync.ppubk

相关内容