如何以 OpenSSH 的新密钥格式存储 RSA-4096 SSH 密钥

如何以 OpenSSH 的新密钥格式存储 RSA-4096 SSH 密钥

我似乎无法生成 RSA-4096SSH键入OpenSSH 的使用以下命令的新密钥格式:

$ ssh-keygen \
  -f rsa4096_key \
  -t rsa \
  -b 4096 \
  -C 'This is a test' \
  -o \
  -N ''

尝试更改 RSA-4096 的现有注释后,至少我收到以下错误消息SSH钥匙:

$ ssh-keygen -cf rsa4096_key
Comments are only supported for keys stored in the new format (-o).

因此,即使我-o在密钥生成期间指定了标志,RSA-4096SSH钥匙似乎是用旧的写的质子交换膜键格式而不是OpenSSH 的新的密钥格式。

注意 Ed25519SSHkey 我可以追溯更改其评论。

根据手册SSH-KEYGEN(1)开放SSH版本OpenSSH_7.7p1

-o导致 ssh-keygen 使用新的 OpenSSH 格式而不是更兼容的 PEM 格式保存私钥。新格式增强了对暴力密码破解的抵抗力,但 6.5 之前的 OpenSSH 版本不支持。 Ed25519 密钥始终使用新的私钥格式。

有人可以解决这个问题或者可以告诉我我做错了什么吗?谢谢!

更新:@slm 提出的解决方案对我有用,尽管它具有误导性的手册页和令人困惑的控制台输出。基本上是命令:

$ ssh-keygen -f rsa4096_key -o -c -C 'here goes your comment'
Key now has comment 'This is a test'
The comment in your key file has been changed.

再次运行时,它证明它将注释更改为上一个命令行中给出的注释:

$ ssh-keygen -f rsa4096_key -o -c -C 'Hello World!'
Key now has comment 'here goes your comment'
The comment in your key file has been changed.

因此我接受了@slm的回答。

答案1

我认为这是交换机行为中的错误-o以及 OpenSSH 中的文档错误。

这对我有用:

$ ssh-keygen \
  -f rsa4096_key \
  -t rsa \
  -b 4096 \
  -C 'This is a test' \
  -o \
  -N ''

$ grep -o "This.*" rsa4096_key.pub
This is a test

所以评论被存储在rsa4096_key.pub文件中。由于 .pub 文件始终可以从私钥中提取,因此它也是私钥文件中的定义。

本次 SU 问答题为:如何更改 RSA 密钥 (SSH) 的注释字段?显示了一些围绕此的分析。 SF Q&A 上还有一条评论,标题为:可以更改密钥对中的电子邮件地址吗?

主要是:

从 OpenSSH 6.5 开始,适用于所有密钥类型,而不仅仅是 RSA1:

ssh-keygen -f ~/.ssh/keyfilename -o -c -C "here goes your comment"
  • -f: 私钥文件
  • -o:将私钥从 PEM 转换为新的 OpenSSH 格式
  • -c:更改私钥和公钥文件中的注释
  • -C: 评论文字
参考

相关内容