我必须生成一个 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 后):
- 保存公钥:这将以 SSH2 公钥格式导出公钥,这是标准 (RFC4716) 但并未得到广泛使用;
- 保存私钥:以专有/加密的 Putty 格式导出私钥;
- 导出 OpenSSH 密钥:这实际上导出一个 OpenSSH 密钥SSL加密私钥(PKCS#1 / PEM 格式),打开SSH通常使用 RSA2 密钥(OpenSSH 在 v2 中同样使用 OpenSSL 格式的 DSA 和 ECDSA 私钥,但在最近的版本中对 Ed25519 私钥有自己的格式,这是一种 OpenSSL 尚不知道的新算法);
- 导出 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 ----