1

JavaScriptでBitbucketAPIラッパーを開発しています。SSHキーを追加するメソッドのテストを作成しようとしています。信頼できるSSHキーを作成するという私の素朴な試みは失敗しました。ダミーキーを生成した方法は次のとおりです。

  1. 「ssh-rsa」で始まります
  2. ランダムな文字の279文字の文字列のBase64エンコード表現を追加します
  3. 追加""
  4. ランダムな文字の16文字の文字列を追加します
  5. 「@」を追加
  6. ランダムな文字の16文字の文字列を追加します
  7. 「.com」を追加

この方法で生成されたSSHキーをPOSTすると、Bitbucketは400BadRequestを返します。幸い、Bitbucketのソースコードにアクセスできるので、もう少し深く掘り下げることができました。Bitbucketは、SSHキーを実行してSSHキーを検証しますssh-keygen

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エンドポイントをテストできる必要があります。また、テストはブラウザーで実行されるため、キーを生成するためにシェルアウトすることはできません。

4

2 に答える 2

8

SSHキーは単なるランダムな文字列ではないため、検証に合格しません。

ここでJavascriptCryptographyToolkitと呼ばれるこのライブラリは、RSAキー(SSHで使用)を生成するのに役立ちます。

キーを生成するデモがあります:https ://github.com/ats4u/titaniumcore/blob/master/crypto/RSA.sample1.html

デモページのソースコードからわかるように、ツールキットはかなり重いですが、それが必要な場合は、それを使用する必要があると思います。もちろん、キー生成をサーバーにオフロードする方がはるかに簡単でしたが、クライアント側のみのライブラリを作成している場合は、これに固執する必要があります。

2019アップデート: githubへのリンクを更新しました。

于 2011-11-12T09:51:03.120 に答える
1

既存の軽量RubySinatraアプリにAJAX呼び出しを行って、SSHキーを生成および取得することになった場合は、sshkeyGemを使用してhttps://rubygems.org/gems/sshkeyを実行できます。

これは、純粋なJavaScriptでそれを行う方法には答えませんが、特定のアプリケーションアーキテクチャに基づいた代替手段を提供します(質問の下のコメントを参照)。

于 2011-11-12T10:00:20.377 に答える