Via*_*mov 15 ssh rsa ssh-keygen
我正在尝试生成 RSA 密钥以使用 ssh 访问 azure 中的一些 git 存储库。
有了 Ubuntu22.04和 OpenSSL 版本OpenSSL 3.0.2 15 Mar 2022,
我生成一个 RSA 密钥,如下所示:
$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/me/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/me/.ssh/id_rsa
Your public key has been saved in /home/me/.ssh/id_rsa.pub
The key fingerprint is:
...
The keys randomart image is:
+---[RSA 4096]----+
....
....
+----[SHA256]-----+
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时
$ cat ~/.ssh/id_rsa,我看到我的密钥文件以以下内容开头:
-----BEGIN OPENSSH PRIVATE KEY-----
应该是BEGIN RSA PRIVATE KEY这样吗?有什么不同?
use*_*686 15
\n\n应该是
\n
不,不是真的。唯一的“应该”是它应该是一种本身可以理解的格式ssh。(私钥永远不会发送到服务器,因此与 Azure \xe2\x80\x93 的兼容性没有问题,它只需要与您的客户端兼容。)因此您当前拥有的密钥格式是正确的;如果您的 ssh-keygen 生成了它,那么您的 ssh 客户端将能够使用它。
在文件中存储 SSH 私钥没有标准格式;每个 SSH 客户端可能使用自己的格式,实际上可能有 4 或 5 种不同的格式。以前,OpenSSH(ssh程序)只是碰巧使用 PKCS#1 格式,因为 OpenSSL 库已经为自己的私钥使用了相同的格式,并提供了一种方便的函数来加载和存储这种格式的密钥。
然而,OpenSSH 并不想依赖于 OpenSSL \xe2\x80\x93 毕竟,SSH 本身并不以任何方式基于 SSL/TLS;OpenSSH 使用 OpenSSL 的唯一原因是它的加密功能(libcrypto,例如 RSA 或 AES)\xe2\x80\x93,因此它最终创建了自己的私钥格式,最初仅用于 Ed25519 密钥,但最终开始使用它对于所有算法。(尽管它仍然理解旧格式。)
\n请注意,无论文件格式如何,实际的“密钥”(例如 RSA 质数或 EC 点)仍然以相同的方式工作,因此如果需要,您可以轻松地从一种格式转换为另一种格式(使用ssh-keygen -p -mPuTTYputtygen工具)。
\n\n有什么不同?
\n
PKCS#1 密钥文件 ( BEGIN RSA PRIVATE KEY) 来自 PEM 加密消息传递项目。该格式相当过时,例如,它对密码短语的暴力破解能力较弱。甚至 OpenSSL 本身后来也开始对所有新私钥使用更新的 PKCS#8 格式(使用BEGIN PRIVATE KEY或标头)。BEGIN ENCRYPTED PRIVATE KEY
然而,PKCS#1和PKCS#8格式内部都使用ASN.1,这是一种相当复杂的数据序列化方法\xe2\x80\x93,对于TLS软件来说仍然可以接受,因为它们已经需要ASN.1支持来解析TLS证书无论如何,但对于 SSH 客户端来说,它只会带来对 OpenSSL 的另一个不必要的依赖。
\n另外,它们的发展也主要由 TLS 和 X.509 证书驱动,这与 SSH \xe2\x80\x93 是两个不同的世界。例如,当 OpenSSH 第一次获得 Ed25519 密钥支持时,它无法使用 OpenSSL 现有的功能存储它们,因为该算法尚未被 TLS 世界采用;尚未分配算法 ID,未就数据格式达成一致。
\n因此,OpenSSH 创建了自己的存储私钥的格式(带有BEGIN OPENSSH PRIVATE KEY标头的格式),该格式使用与 SSH 本身相同的结构和算法标识符,这意味着 SSH 支持的任何密钥都可以以 OpenSSH 密钥格式存储xe2\x80\x93 并且可以加载/存储它们而不再依赖 SSL/TLS 库。
(出于类似的原因,PuTTY 也有自己的“PPK”密钥格式,以避免复杂的外部库。)
\n| 归档时间: |
|
| 查看次数: |
43246 次 |
| 最近记录: |