OpenSSH 密钥
在浏览器中生成 Ed25519、ECDSA 或 RSA SSH 密钥对(可加密码短语),并在 OpenSSH、PKCS#8 与 SPKI PEM 之间转换。
输入内容和文件始终留在浏览器中
生成
密码短语以空格开头或结尾。它将按输入原样使用,空格也包括在内。
导入
粘贴 OpenSSH、SPKI 或 PKCS#8 密钥,打开密钥文件,或将其拖放到此处。
支持 OpenSSH 公钥/私钥和 PKCS#8 PEM 文件。
生成密钥对或导入密钥后,公钥将显示在这里。
生成密钥或导入私钥后,私钥将显示在这里。
本页内容
OpenSSH 密钥工具可生成 SSH 密钥对(Ed25519、ECDSA P-256/P-384、RSA 3072/4096),并在 OpenSSH、PKCS#8 和 SPKI PEM 格式之间转换。密钥在浏览器中生成和转换,私钥不会发送到任何地方。
详细功能
生成结果为 OpenSSH 私钥(-----BEGIN OPENSSH PRIVATE KEY-----)和对应的公钥行(ssh-ed25519 AAAA…),可直接放入 authorized_keys。设置密码短语时,私钥按 ssh-keygen 的方式加密:bcrypt-pbkdf 16 轮加 aes256-ctr。密码短语按输入原样使用,包括空格。密钥生成在 Web Worker 中进行:Ed25519 和 ECDSA 只需几毫秒,RSA 4096 需要几秒到约一分钟;期间页面仍可操作,并显示已用时间和 取消 按钮。
导入 支持粘贴密钥或密钥文件(可拖放):OpenSSH 公钥行(ssh-ed25519、ecdsa-sha2-nistp256/384、ssh-rsa)、OpenSSH 私钥、SPKI PUBLIC KEY PEM,以及 PKCS#8 PRIVATE KEY / ENCRYPTED PRIVATE KEY PEM。对私钥会推导出公钥行,对公钥会显示算法和注释。转换 可将 OpenSSH 私钥转为 PKCS#8,将 OpenSSH 公钥行与 SPKI PEM 互转,并将 PKCS#8 转为 OpenSSH。
结果可复制,或下载为 id_key / id_key.pub(生成)或 imported.key / imported.pub(导入)。警告会指出较弱的选择,例如短于 3072 位的 RSA。本工具旧版本会去掉密码短语首尾空格,它生成的密钥仍可打开:如果输入的密码短语被拒绝,会尝试去掉首尾空格的版本并给出提示。
实用示例
为服务器创建新密钥:选择 Ed25519,点击 生成密钥,把公钥行(以 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5 开头)追加到服务器的 ~/.ssh/authorized_keys,并把私钥保存为 ~/.ssh/id_ed25519,权限设为 600。
为旧系统生成 RSA:设备不接受 Ed25519 时选择 RSA 4096。生成需要一些时间,会显示已用秒数,取消 可中止。
OpenSSH 公钥转 PEM:粘贴 ssh-ed25519 AAAA… user@host 并点击 转换,得到以 -----BEGIN PUBLIC KEY----- 和 MCowBQYDK2VwAyEA 开头的 SPKI PEM,这是 OpenSSL、Java 等库期望的格式。
在代码中使用 SSH 密钥:粘贴 OPENSSH PRIVATE KEY(在字段中填入其密码短语),点击 转换,得到 PKCS#8 -----BEGIN PRIVATE KEY----- 块,供不支持 OpenSSH 格式的库使用。
如何使用此工具
选择密钥类型
在 生成 中选择 算法:Ed25519 (Recommended)、ECDSA P-256/P-384 或 RSA 3072/4096。密钥大小 仅对 RSA 可用。
可选设置密码短语
在 密码短语(可选) 中输入短语以加密私钥;留空则生成未加密的私钥。
生成
点击 生成密钥。生成 RSA 时会出现带已用时间和 取消 的进度条。
保存密钥
在 公钥 和 私钥 处使用 复制 或 下载。
导入或转换现有密钥
在 导入 中粘贴密钥或拖入密钥文件,然后点击 导入 查看,或点击 转换 更改格式。
提示和最佳实践
- Ed25519 密钥短、快,OpenSSH 6.5+ 和主流 Git 托管平台都支持;只有在必须时才使用 RSA。
- "ssh-rsa uses SHA-1" 警告针对的是旧的签名方案;当前的 OpenSSH 使用 RSA 密钥时采用 rsa-sha2-256/512 签名。
- 没有密码短语的私钥只和它所在的磁盘一样安全;笔记本上的密钥请加上密码短语。
- 以空格开头或结尾的密码短语是另一个短语;字段会显示提示,避免无意中出现。
- 下载的私钥需要先执行
chmod 600,否则ssh会拒绝使用。