我使用公钥/私钥对已经很长时间了。几乎与此同时,我一遍又一遍地问自己,我应该使用哪种文件扩展名。似乎至少对于公钥和私钥(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
.pub
id_rsa.pub
id_dsa.pub
id_rsa_myhost
id_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