javascript - 在 JavaScript 中生成格式正确的 SSH key

标签 javascript ssh-keys bitbucket-api

我正在开发 Bitbucket API wrapper在 JavaScript 中。我正在尝试为添加 SSH key 的方法编写测试。我天真地尝试创建一个可信的 SSH key ,但没有成功。以下是我生成虚拟 key 的方式:

  1. 从“ssh-rsa”开始
  2. 附加 279 个随机字符串的 Base64 编码表示
  3. 附加“”
  4. 附加 16 个随机字符的字符串
  5. 附加“@”
  6. 附加 16 个随机字符的字符串
  7. 附加“.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/

相关文章:

javascript - 如何在页面加载后的特定时间添加和删除 HTML 类?

Javascript 新数组和 join() 方法

Github 多个帐户-personalUserName/repoName.git 的权限被拒绝给 globalUserName

bitbucket - 如何获取允许用户访问的存储库的完整列表?

jenkins - Bitbucket 拉取请求构建器插件不断触发相同的提交构建

rest - 如何使用 api 1.0 在 Bitbucket 中创建拉取请求

javascript - q.在 promise 完成之前全部返回

ssh - 基础/Nagios 的 check_by_ssh 返回 "Remote command execution failed"

ssh - gitHub 如何仅使用 ssh key 限制访问?

javascript - 从段落中查找特定单词