5

GitHub の v3 API 経由で ssh キーを追加しようとしていますが、機能していないようです。

私がやっていることは、ここで与えられた指示に基づいています。

より具体的には、次のものを使用しています。

KEY=$( cat ~/.ssh/id_rsa.pub )
TITLE=${KEY/* }
# the '/* ' above deletes every character in $KEY up to and including the last
# space.

JSON=$( printf '{"title": "%s", "key": "%s"}' "$TITLE" "$KEY" )

TOKEN=$( cat /path/to/tokenfile )

curl -s -d "$JSON" "https://api.github.com/user/keys?access_token=$TOKEN"

上記を実行すると、次のような応答が返されます。

{
  "message": "Not Found"
}

...そして、確かに、GitHub アカウントをチェックインすると、リストされている1$KEYの ssh-keys の中にありません。

 

 

私は何を間違っていますか?

 

 

追加の詳細

実行しても同じ"message": "Not Found"応答が得られます

curl -s "https://api.github.com/user/keys?access_token=$TOKEN"

-s上記をに置き換える-iと、実際に返されるステータスは404 Not Foundです。それでも、返されたステータス

curl -i "https://api.github.com/user/keys"

です401 Unauthorized


1のアクセス トークンに問題がないことはわかっているため、応答$TOKENの理由にはなりません。"message": "Not Found"

curl -s "https://api.github.com/user/repos?access_token=$TOKEN"

正しい情報を返し、

curl -s "https://api.github.com/user/repos"

戻り値

{
  "message": "Requires authentication"
}
4

2 に答える 2

5

2014 年 2 月の時点で、「ユーザー」スコープでは、ユーザーの SSH キーを管理するための十分なアクセス権が提供されなくなりました。スコープは次のように定義する必要があります。

  • read:public_key - ユーザーの SSH キーへの読み取りアクセスを提供します
  • write:public_key - アプリが既存のキーを読み取って新しいキーを作成できるようにします
  • admin:public_key - アプリによるキーの読み取り、書き込み、および削除を可能にします
于 2014-07-18T19:59:51.497 に答える
4

あなたのアクセス トークンには「ユーザー」スコープがありますか? ドキュメントからの関連する抜粋:

API を使用して公開鍵を管理するには、基本認証または「ユーザー」スコープの OAuth で認証されている必要があります。

トークンに「ユーザー」スコープがない場合、見つかりません」というメッセージを含む 404 応答が返されます。

トークンに関連付けられているスコープを表示するには、「Authorizations」API を使用します。

curl -u <username> https://api.github.com/authorizations

以下の応答例では、最初の承認には「ユーザー」スコープがありますが、2 番目の承認にはありません。

enter code here
[
  {
    "id": 123,
    "url": "https://api.github.com/authorizations/123",
    "app": {
      "name": "Foo",
      "url": "https://foo.example.com/",
      "client_id": "REDACTED-ID-1"
    },
    "token": "REDACTED-TOKEN-1",
    "note": null,
    "note_url": null,
    "created_at": "2013-02-18T18:24:00Z",
    "updated_at": "2013-05-06T14:17:00Z",
    "scopes": [
      "repo",
      "user"
    ]
  },
  {
    "id": 456,
    "url": "https://api.github.com/authorizations/456",
    "app": {
      "name": "Bar",
      "url": "https://bar.example.com/",
      "client_id": "REDACTED-ID-2"
    },
    "token": "REDACTED-TOKEN-2",
    "note": "for stuff",
    "note_url": null,
    "created_at": "2013-04-16T12:20:00Z",
    "updated_at": "2013-05-13T21:28:00Z",
    "scopes": [
      "public_repo"
    ]
  }
]

これが問題の原因であると判断した場合は、次の 2 つの方法のいずれかで解決できます。

于 2013-05-21T17:25:27.000 に答える