我正在开发 Bitbucket API wrapper在 JavaScript 中。我正在尝试为添加 SSH key 的方法编写测试。我天真地尝试创建一个可信的 SSH key ,但没有成功。以下是我生成虚拟 key 的方式:
- 从“ssh-rsa”开始
- 附加 279 个随机字符串的 Base64 编码表示
- 附加“”
- 附加 16 个随机字符的字符串
- 附加“@”
- 附加 16 个随机字符的字符串
- 附加“.com”
当我 POST an SSH key 时,Bitbucket 返回 400 Bad Request以这种方式生成。幸运的是,我可以访问 Bitbucket 的源代码,所以我能够更深入地挖掘。 Bitbucket 通过 ssh-keygen
运行 SSH key 来验证它们.
我不明白 SSH key 是如何生成的,所以我可能会问一个愚蠢的问题。是否有可能生成一个足以欺骗 ssh-keygen
的 SSH key ?这是输出:
$ ssh-keygen -l -f ~/Desktop/dummy_rsa.pub
buffer_get_string_ret: bad string length 1903654498
key_from_blob: can't read key type
key_read: key_from_blob cXd2YnRzZXpha3Rld2V4YmdieWdoeWl2aXpla3hkaHBodnlteHl2ZHl0bnloYmRyYWZrdnVxaWR3cHBydnFmZWFkaHp0aGRwYml6ZXVxY3ZlZ3NiZ29lanl0cG9vZmlnZ2dyZmJ3aWxsdXJhb2puYWRjY3F0YW5rcGV3Z3dkc3lxd2tkb3d6emFzbXpubXJ1eGN2bm53a3l6bmRjenV1dnplbnFtZ3Z5bm96ZGZhandwcG9mcHVoaWFkZ25ud3VkdnB0enV6Zm51bWVxanhzanlwa2ZodGxpd2xld2pnY3dhbmJ6aXVyamp6c29rbm54dHp2enJmeWhnY2ZrcWlqemFscGNnbWJsY3lpcmRtYXFkbHB6c3l0 duvrnzsladfrmccr@xqrbenpfryhoklgw.com
failed
/Users/dc/Desktop/dummy_rsa.pub is not a public key file.
明确地说,我不需要生成“有效”的 SSH key ,我只需要能够测试各种 API 端点。此外,由于测试在浏览器中运行,我无法花钱生成 key 。
最佳答案
SSH key 不仅仅是随机的字符串,所以这就是它们无法通过验证的原因。
本图书馆here称为 Javascript Cryptography Toolkit 可以帮助您生成 RSA key (由 SSH 使用)。
他们有生成 key 的演示:https://github.com/ats4u/titaniumcore/blob/master/crypto/RSA.sample1.html
正如您从演示页面的源代码中看到的那样,该工具包非常重,但如果这是您需要的,那么我想这就是您必须使用的。当然,将 key 生成卸载到服务器会简单得多,但如果您正在编写仅客户端库,那么您必须坚持这一点。
2019 年更新:更新了 github 链接。
关于javascript - 在 JavaScript 中生成格式正确的 SSH key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8103654/