如何命名openssh公钥和私钥对?

I-G*_*y-I 27 ssh openssh putty

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

我的意思是在 PuTTy 中.ppk,“PuTTy 私钥”有一个特殊的扩展名,公钥存储在没有扩展名的情况下,或者带有.pub. 我个人不喜欢使用.pub,因为微软已经在 MS Publisher 中使用了这个扩展。因此,对于 PuTTy,我使用相同的名称存储两个密钥,并将其添加.ppk到私钥中,而没有添加到公钥中。对于这种情况,我可以接受。我可以确定哪个密钥是公共密钥,哪个是私有密钥,而私有密钥仅用于 PuTTy。

但是我应该如何处理私有的 openssh 密钥?只存储它而不扩展?或者使用类似的东西.openssh?此外,如果真的没有约定,如果有人只是考虑一下并为自己整理出某种概念,我也将不胜感激......

提前致谢!

hea*_*vyd 24

首先,实际上没有命名键的官方约定。它们的文件名无关紧要。它们只对你重要,你必须管理它们。该软件只关心文件的内容。

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

我通常只坚持该ssh-keygen工具使用的约定,id_{key_algorithm}即(即id_rsaid_dsa)用于私钥,然后是私钥名称 +.pub用于公钥(id_rsa.pubid_dsa.pub)。如果我需要保留多个键,我会在名称的末尾添加一个额外的标识符,这样我就会得到像id_rsa_myhost和这样的名称id_rsa_myhost.pub

  • 缺乏文件名约定对任何人都没有好处。首先,它只允许人们在真正打算发送公钥时错误地发送私钥。不,对人类完美的期望,或者对所有密钥文件内部的一丝不苟的双重检查都不能替代这一重大疏忽。感谢这些建议。 (4认同)

I-G*_*y-I 19

所以我想了一些命名概念,现在就这样结束了。我知道除了.ppkPuTTy中的(PuTTy Private Key)之外没有其他约定——所以这不是“你必须这样做”,而是一个命名概念想法。所以我想无论如何都要与你分享 - 也许它至少可以帮助某人建立自己的概念。

我想要/不想要什么

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

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

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

一个可能的命名方案

正如heavyd提到的,我认为坚持ssh-keygen工具的语法确实是一个好主意。所以我使用这个(除了 for .pubpublic 密钥,因为这个文件扩展名被 Microsoft Publisher 使用,并且在 Windows 系统上可能被错误解释 - MS Publisher 也有一个自己的图标)并将它与 PuTTy ( .ppk)的约定结合起来以及上述条件。因此,一个可能的名称方案可能是:

id_<key_algorithm>_<servername>_<purpose>.<format_information>
Run Code Online (Sandbox Code Playgroud)

遵循以下规则:

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

格式信息(OpenSSH/PuTTy 和私有/公共)

PuTTy.ppk用于私钥,该ssh-keygen工具.pub在这里用于公钥,由于 MS Publisher,我不想使用它。因此,我坚持使用 PuTTys .ppk,与ssh-keygens略有不同,.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
Run Code Online (Sandbox Code Playgroud)

一些例子:

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
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢`.ospk` (4认同)