为SSH生成私钥+公钥对:ssh-keygen和openssl之间的区别?

火箭坚果

我想创建用于SSH身份验证的私钥和公钥对。

我不知道这之间的区别:

openssl genrsa -out MyPrivateKey 4096
openssl rsa -in MyPrivateKey -pubout -out MyPublicKey

它首先创建一个私有RSA密钥,然后从中派生出公共密钥,或者:

ssh-keygen -b 4096 -t rsa -f MyFancyKey

会在文件“ MyFancyKey”中创建一个私有RSA密钥,并在“ MyFancyKey.pub”中创建相应的公共密钥。

私钥的结构看起来有些相似,尽管创建的私钥的openssl开头是:
-----BEGIN RSA PRIVATE KEY-----

而其中的一个ssh-keygen开始于:
-----BEGIN OPENSSH PRIVATE KEY-----

这两种键之间有根本区别吗?


然后是对应的公共密钥,其中的一个openssl包含:

-----BEGIN PUBLIC KEY-----
  ...base64 encoded...
-----BEGIN PUBLIC KEY-----

来自的ssh-keygen那一行仅包含一行:
ssh-rsa XXXXXX...base64 encoded...XXXXX [email protected]

这些数据本质上是同一种数据,但格式不同吗?还是它们真的不兼容?

我试图全面了解所有这些与SSH的关系。例如,为什么在该密钥中是我的用户名,计算机名和本地网络名,通常不应该使用它来访问其他计算机上的SSH 在该计算机上使用我的用户名,而不是我自己的用户名。

用户名

私钥

这两种键之间有根本区别吗?

不,它们本质上是相同的数据。

  • BEGIN RSA PRIVATE KEY表示“ PKCS#1”或“ PEM”密钥格式,它是ASN.1 DER序列化结构的Base64编码。这是一个基本的ASN.1序列,包含RSA参数(nedpq等)。

    OpenSSH的实际上已经传统使用这种格式,以及-因为它已经使用OpenSSL的加密代码,因此,“负载键”和“写密钥”功能,也方便使用。

    这意味着您可以ssh-keygen -m PEM用来生成或转换此类密钥。

  • BEGIN PRIVATE KEY指示“ PKCS#8”密钥格式(未加密);内容与上述格式非常相似,相同的RSA参数嵌套在另一个结构中,这表明它确实是RSA密钥。

    与PEM相比,PKCS#8格式更清晰地将“有效负载”(密钥算法,加密)与外部Base64包装器分开。它不会改变数据的含义。

    OpenSSH也将识别这种格式(由于其用于密钥加载的OpenSSL用法)。

  • BEGIN OPENSSH PRIVATE KEY是OpenSSH为OpenSSH发明的格式。这次,它使用SSHv2数据包序列化而不是DER。

    OpenSSH现在使用这种格式,以便可以避免完全依赖于OpenSSL,和/或可以在不等待PKIX标准化ASN.1序列化格式的情况下添加新的密钥算法(否则与SSH完全无关),并且然后等待OpenSSL实施它。

  • PuTTY具有自己的.ppk格式。您可以使用/ usr / bin / puttygen在所有它们之间进行转换。

  • 另请参阅:OpenSSH公钥文件格式?

公钥

这些数据本质上是同一种数据,但格式不同吗?

是的,它们本质上是相同的数据。

  • BEGIN PUBLIC KEY我相信也是PKCS#8 –因此在Base64内部有一个DER序列化的ASN.1结构,该结构将其标识为RSA密钥,其后是密钥参数(ne

  • 单行格式是部分OpenSSH特定的,尽管中央Base64编码的数据与SSHv2协议本身(“在线”)中使用的格式完全相同。您可能会猜到,编码后的数据使用SSHv2数据包序列化-但它仍具有相同的RSA ne值。

  • 另请参阅:OpenSSH公钥文件格式?

例如,为什么在该密钥中输入我的用户名,计算机名称和本地网络名称

这是一条注释,可帮助您在authorized_keys文件较长的情况下将此公用密钥与其他公用密钥区分开

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SSH权限被拒绝(公钥)

来自分类Dev

使用OpenSSL生成RSA公钥/私钥?

来自分类Dev

Java中的ssh-keygen命令从私钥中提取公钥

来自分类Dev

如何从SSH私钥中检索公钥?

来自分类Dev

无法为ssh生成U2F公钥/私钥:FIDO_ERR_RX

来自分类Dev

我无法使用公钥和私钥从Jenkins节点SSH到远程服务器

来自分类Dev

如何验证SSH公钥?

来自分类Dev

如何从SSH私钥中检索公钥?

来自分类Dev

为什么不先生成ssh公钥/私钥就可以进行ssh连接?

来自分类Dev

无法使用公钥ssh

来自分类Dev

SSH公钥认证

来自分类Dev

使用多个SSH公钥

来自分类Dev

SSH公钥错误

来自分类Dev

ssh公钥认证失败

来自分类Dev

SSH用户公钥信息

来自分类Dev

ssh中使用公钥/私钥和证书登录之间的区别

来自分类Dev

GnuPG生成公钥/私钥对,其中公钥和私钥相同且没有不同

来自分类Dev

openssl可以将SSH公钥转换为没有私钥的PEM文件吗?

来自分类Dev

SSH不使用公钥/私钥

来自分类Dev

使用ssh-keygen -y -f(.pem)(.pub)将私钥更改为公钥时,出现以下错误消息

来自分类Dev

ssh-keygen私钥和libressl的私钥之间的区别?

来自分类Dev

sshd-keygen和ssh-keygen之间的区别

来自分类Dev

SSH权限被拒绝(公钥)

来自分类Dev

ssh权限被拒绝(公钥)

来自分类Dev

如何替换ssh私钥-公钥对?

来自分类Dev

如何使用 OpenSSL 为 DNSSEC 生成 ECDSA 私钥和公钥?

来自分类Dev

CentOS8 SSH 公钥认证和 Nginx

来自分类Dev

SSH公钥登录失败

来自分类Dev

AWS SSH 和 RDS 权限被拒绝 - 公钥