Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中生成格式良好的SSH密钥_Javascript_Ssh Keys_Bitbucket Api - Fatal编程技术网

在JavaScript中生成格式良好的SSH密钥

在JavaScript中生成格式良好的SSH密钥,javascript,ssh-keys,bitbucket-api,Javascript,Ssh Keys,Bitbucket Api,我正在用JavaScript开发一个应用程序。我正在尝试为添加SSH密钥的方法编写测试。我天真地尝试创建可信的SSH密钥,但没有成功。下面是我如何生成虚拟密钥的: 从“ssh-rsa”开始 附加279个随机字符字符串的Base64编码表示形式 附加“” 附加16个随机字符的字符串 附加“@” 附加16个随机字符的字符串 附加“.com” 当我以这种方式生成时,Bitbucket返回400个错误请求。幸运的是,我可以访问Bitbucket的源代码,所以我能够更深入地挖掘。Bitbucket通过运行

我正在用JavaScript开发一个应用程序。我正在尝试为添加SSH密钥的方法编写测试。我天真地尝试创建可信的SSH密钥,但没有成功。下面是我如何生成虚拟密钥的:

  • 从“ssh-rsa”开始
  • 附加279个随机字符字符串的Base64编码表示形式
  • 附加“”
  • 附加16个随机字符的字符串
  • 附加“@”
  • 附加16个随机字符的字符串
  • 附加“.com”
  • 当我以这种方式生成时,Bitbucket返回400个错误请求。幸运的是,我可以访问Bitbucket的源代码,所以我能够更深入地挖掘。Bitbucket通过运行SSH密钥来验证它们

    我不明白SSH密钥是如何生成的,所以我可能会问一个愚蠢的问题。是否有可能生成足够可信的SSH密钥来愚弄
    SSH-keygen
    ?以下是输出:

    $ 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密钥,我只需要能够测试各种API端点。另外,由于测试是在浏览器中运行的,所以我无法使用shell生成密钥。

    SSH密钥不仅仅是随机的字符串,因此它们无法通过验证

    这个名为Javascript加密工具包的库可以帮助您生成RSA密钥(由SSH使用)

    他们有一个生成密钥的演示:

    正如您从演示页面的源代码中看到的,该工具包相当重,但是如果这是您所需要的,那么我想这就是您必须使用的。当然,只需将密钥生成卸载到服务器上会简单得多,但是如果您正在编写一个仅客户端的库,那么您必须坚持这一点


    2019更新:更新了github的链接

    SSH密钥不仅仅是随机的字符串,所以这就是它们不能通过验证的原因

    这个名为Javascript加密工具包的库可以帮助您生成RSA密钥(由SSH使用)

    他们有一个生成密钥的演示:

    正如您从演示页面的源代码中看到的,该工具包相当重,但是如果这是您所需要的,那么我想这就是您必须使用的。当然,只需将密钥生成卸载到服务器上会简单得多,但是如果您正在编写一个仅客户端的库,那么您必须坚持这一点


    2019更新:更新了github的链接

    如果您最终对现有的轻量级Ruby Sinatra应用程序进行AJAX调用以生成和检索SSH密钥,那么您可以使用sshkey Gem来完成此操作


    这并没有回答如何在纯JavaScript中实现这一点,而是根据您的特定应用程序体系结构提供了另一种途径(请参见问题下方的注释)

    如果您最终对现有的轻量级Ruby Sinatra应用程序进行AJAX调用以生成和检索SSH密钥,那么您可以使用sshkey Gem来完成此操作


    这并没有回答如何在纯JavaScript中实现这一点,而是根据您的特定应用程序体系结构提供了另一种途径(请参见问题下方的注释)

    您不能“掏腰包”生成密钥,但是您可以从浏览器发出AJAX请求,从服务器检索生成的(或有效的)SSH密钥吗?@JohnK如果需要,可以。我正在通过一个轻量级的Sinatra应用程序代理请求,不过如果可能的话,我宁愿避免让它成为一个中间人。你不能“掏钱”生成密钥,但你能从浏览器发出AJAX请求,从服务器检索生成的(或有效的)SSH密钥吗?@JohnK如果必要,可以。我正在通过一个轻量级的Sinatra应用程序代理请求,不过如果可能的话,我宁愿避免让它成为更多的中间人。谢谢,John。完美的不。实用的当然可以。谢谢你,约翰。完美的不。实用的当然。那些链接断了。这些链接断了