以 OpenSSH 格式生成 RSA2 密钥

以 OpenSSH 格式生成 RSA2 密钥

我必须生成一个 OpenSSH 格式的 RSA v2 密钥。我有点困惑。我正尝试使用 Putty Key Generator 生成它。在那里我看到一个选项 SSH2-RSA、SSH1-RSA。那么 SSH2-RSA 是 RSA2 密钥还是其他意思?

另外,这个密钥是 OpenSSH 格式的吗?我看到有一个转换选项卡,其中有两个选项:导出 OpenSSh 密钥和导出 ssh.com 密钥。所以我不确定我生成的密钥是否是 OpenSSH 格式。

答案1

我看到一个选项 SSH2-RSA、SSH1-RSA。那么 SSH2-RSA 是 RSA2 密钥还是其他意思?

OpenSSH 对 RSA 密钥使用两种不同的格式(和文件):一种用于旧的、弱的 SSHv1 协议,您不应该使用(并且通常也不允许使用);另一种用于当前的 SSHv2 协议。ssh-keygen在 OpenSSH 中将它们称为-t rsa1-t rsa(人们为了清楚起见称之为 rsa2),并将puttygen它们称为 SSH1-RSA 和 SSH2-RSA。

所以是的,SSH2-RSA 表示 RSA2 格式的密钥。

此密钥是否也是 OpenSSH 格式?我看到有一个转换选项卡,其中有 2 个选项:导出 OpenSSh 密钥和导出 ssh.com 密钥。

似乎有 4 个选项(选择 SSH2-RSA 后):

  1. 保存公钥:这将以 SSH2 公钥格式导出公钥,这是标准 (RFC4716) 但并未得到广泛使用;
  2. 保存私钥:以专有/加密的 Putty 格式导出私钥;
  3. 导出 OpenSSH 密钥:这实际上导出一个 OpenSSH 密钥SSL加密私钥(PKCS#1 / PEM 格式),打开SSH通常使用 RSA2 密钥(OpenSSH 在 v2 中同样使用 OpenSSL 格式的 DSA 和 ECDSA 私钥,但在最近的版本中对 Ed25519 私钥有自己的格式,这是一种 OpenSSL 尚不知道的新算法);
  4. 导出 ssh.com 密钥:这将以 ssh.com 的商业 SSH 实现使用的格式导出密钥,参见维基百科,可以使用 将其导入 OpenSSH ssh-keygen -i

此外,无论何时生成或加载密钥,公钥都会以 OpenSSH authorized_keys(和known_hosts)格式显示,无需执行明确操作。此格式在 RSA1(SSHv1)和 RSA2 以及其他 SSHv2 密钥之间也有所不同,但差别不大。对于 v2,它使用线路编码的算法名称和 base64,类似于 rfc4716 格式,但没有换行符或 PEM 标头/尾部。

请注意,公钥格式通常更重要,因为需要将公钥复制到服务器(服务器可能运行的软件与客户端不同),而私钥格式可以保留在本地。然而,SSH 用户也经常将私钥复制到其他机器。

保存公钥

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20151022"
    ... base 64 ...
---- END SSH2 PUBLIC KEY ----

保存私钥

PuTTY-User-Key-File-2: ssh-rsa
Encryption: aes256-cbc
Comment: rsa-key-20151022
Public-Lines: 6
... base 64 ...
Private-Lines: 14
... base 64 ...
Private-MAC: 243d3afda7ac218891e39fc0df7ed7cf97d8f358

导出 OpenSSH 密钥

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,85137363803E9EA9

... base 64 ...
-----END RSA PRIVATE KEY-----

导出 ssh.com 密钥

---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ----
Comment: "rsa-key-20151022"
... base 64 ...
---- END SSH2 ENCRYPTED PRIVATE KEY ----

相关内容