跳到正文

SSH 密钥生成

SSH Key Generator

生成带注释的 OpenSSH 密钥对,并显示指纹。私钥不带口令导出,需要的话用 ssh-keygen -p 自己加。

同一个密钥生成器,打开在它的 OpenSSH 标签上:一行 `authorized_keys` 和一个配对的 `openssh-key-v1` 私钥,在浏览器里生成。默认 Ed25519,主机需要的话还有 ECDSA 和 RSA。

🔒 完全在你的浏览器里运行sshkeyscrypto
算法

小、快、现代。2014 年起就是 SSH 的默认值。

会出现在 OpenSSH 公钥那一行的末尾。

密钥由这个浏览器自己的 WebCrypto(crypto.subtle.generateKey)在本标签页里生成,不会离开这里——不传输、不记录、不存储。输出格式在本项目的测试里与 OpenSSH 本身逐一核对过。条件允许的话,请在将要保管私钥的那台机器上生成;在浏览器标签页里存在过的密钥,就是在那个标签页的内存里存在过。

怎么用

  1. 设置注释

    它放在公钥那一行的末尾——习惯上是 `you@machine`。两年后在一个有十几条记录的 `authorized_keys` 里找到对的那一行,靠的就是它。

  2. 把公钥复制到服务器

    一行,追加到主机上的 `~/.ssh/authorized_keys`。私钥留在你这里。

  3. 保存私钥并锁好它

    下载为 `id_key`,然后 `chmod 600 id_key`——ssh 拒绝其他账户能读的私钥——再 `ssh-keygen -p -f id_key` 加口令。

常见问题

为什么私钥没有加密?

加密一个 `openssh-key-v1` 密钥需要 bcrypt-pbkdf,在这里做意味着声称一个这个页面无法对每一组参数都对照 OpenSSH 验证的 KDF 实现。在本地用 `ssh-keygen -p` 加口令用的是 OpenSSH 自己的代码,严格来说更好。

我真的该在浏览器里生成 SSH 密钥吗?

对一台临时主机、一个实验环境,或者手边没有终端的时候,这是合理的便利——什么都不传输,格式在这个项目的测试里对照 `ssh-keygen` 本身验证过。打开生产环境的那把密钥,请在将要保管它的机器上用终端生成。

服务器还是在要密码。

通常是权限:主机上 `~/.ssh` 必须是 700、`authorized_keys` 是 600,你这边私钥是 600。`ssh -v` 会说是哪一项检查失败了,而且几乎总是这一个。

一把密钥能用于几台服务器吗?

能,而且这很常见。代价是爆炸半径:一把泄露的私钥打开它装过的所有地方。每个环境一把——笔记本到生产、CI 到预发——每把只多一行,却限制了损失。

可以从这些接进来

接下来

这些工具吃得下当前工具的产出,结果可以直接送过去。