将RSA转换为OPENSSH

11

首先声明,我对证书/密钥非常缺乏经验,并且我正在使用 Mac。

我的问题与 RSA 和 OPENSSH 证书/密钥有关。我目前拥有一个有效的 RSA 证书/密钥,但我需要将它们转换为 OpenSSH。据我了解,我想要做的是这个帖子的反向操作:Openssh Private Key to RSA Private Key

我有一个以此开头的文件:

-----BEGIN RSA PRIVATE KEY-----

但是我需要将其转换为以下格式:

-----BEGIN OPENSSH PRIVATE KEY-----

我尝试过ssh-keygen -p -N "" -m pem -f /path/to/keyssh-keygen -f /path/to/key -m pem,但它没有输出我期望的OPENSSH头部信息。

  1. 这是否可能?
  2. 如果可能,我可以使用什么来执行此转换并且可能的命令是什么?
  3. 如果我转换了密钥,是否需要对证书进行任何操作?
  4. 如果我确实需要转换证书,那么该命令是什么?
  5. 如果有关从RSA转换为OPENSSH的进一步解释,我将非常感激。

根据 https://man7.org/linux/man-pages/man1/ssh-keygen.1.html 文档,当生成或更新支持的私钥类型时,设置“PEM”格式将导致密钥以传统的PEM私钥格式存储。 - Jing He
1个回答

23
只要在命令中使用-m PEM,结果就不会是OPENSSH格式。 这将把RSA/PEM私钥转换为OPENSSH格式:
ssh-keygen -p -N "" -f /path/to/key

你可以提取它的公钥并确认它与之前的公钥相同:

ssh-keygen -y -f /path/to/key

1
我认为这里存在一些版本依赖性。我不得不添加“-o”参数才能让ssh-keygen输出OpenSSH格式。这似乎取决于OpenSSH 6.5及更高版本。 - hydrian
@hydrian 确实。我不熟悉6.x版本,通常使用7.8及更高版本:https://dev59.com/dVQJ5IYBdhLWcg3wiWec#53645530 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接