Загрузите открытый ключ SSH в облачное хранилище с помощью curl / REST и токена - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть облачная учетная запись bitbucket.В разделе: https://id.atlassian.com/manage/api-tokens я сгенерировал токен API, который я пытаюсь использовать в вызове REST для загрузки открытого ключа SSH в свою учетную запись.На основании:

https://docs.atlassian.com/bitbucket-server/rest/5.6.2/bitbucket-ssh-rest.html?utm_source=%2Fstatic%2Frest%2Fbitbucket-server%2F5.6.2%2Fbitbucket-ssh-rest.html&utm_medium=301#idm45427244388592

https://community.atlassian.com/t5/Answers-Developer-Questions/Bitbucket-REST-API-POST-using-token-instead-of-basic-auth/qaq-p/474823

Я пытался:

curl -X POST -d '{"text":"ssh-rsa AAAAB3... me@127.0.0.1"}' -H "Authorization: Bearer ADasdaEeasAsd..." https://bitbucket.org/[my-account]]/rest/ssh/latest/keys

Но когда я бегу, я получаю:

{"type": "error", "error": {"message": "Access token expired. Use your refresh token to obtain a new access token."}}

Я попытался воссоздать токен и еще раз выполнить указанную выше команду - с новым токеном - но я получаю ту же ошибку.

Есть предложения?

На основании приведенного ниже ответа и ссылки, которую я сейчас попробовал:

curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer wxdrtblabla..." \
-d '{"key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKqP3Cr632C2dNhhgKVcon4ldUSAeKiku2yP9O9/bDtY myuser@bitbucket.org/myuser"}' \
https://api.bitbucket.org/2.0/users/myuser/ssh-keys

Но я получаю точно такую ​​же ошибку:

{"type": "error", "error": {"message": "Access token expired. Use your refresh token to obtain a new access token."}}

Так что все равно не повезло.Также, если я получаю доступ к

https://api.bitbucket.org/2.0/users/[myuser]/ssh-keys

прямо в браузере, я получаю:

type    "error"
error   
message "This API is only accessible with the following authentication types: session, password, apppassword"

РЕДАКТИРОВАТЬ / ОТВЕТИТЬ: На основеВ обновленном ответе ниже я не пытался создать пароль приложения и предоставить ему учетную запись: чтение / запись в bitbucket, и это работает.Я запускаю его с:

curl -v -u myuser:my-generated-app-password -X POST  \
-H "Content-Type: application/json" \
-d '{"key": "ssh-rsa AAA....ro"}' \
https://api.bitbucket.org/2.0/users/myuser/ssh-keys

1 Ответ

0 голосов
/ 02 октября 2018

Вы просматриваете документацию по Bitbucket Server, но используете Bitbucket Cloud.(Раздача: часть «bitbucket-server» в пути к документу и «bitbucket.org» в пути, по которому вы нажимаете свою клавишу.)

Взамен https://developer.atlassian.com/bitbucket/api/2/reference/resource/users/%7Busername%7D/ssh-keys#post- это документация Bitbucket Cloud, чтобы делать то, что вы пытаетесь сделать.Ваш URL будет больше похож на https://api.bitbucket.org/2.0/users/[your-account]/ssh-keys.

РЕДАКТИРОВАТЬ: ошибка, которую вы получили, указывает на проблему: вам нужно либо сделать этот вызов из существующего сеанса (например, из графического интерфейса), использовать свой пароль, илииспользуйте пароль приложения .Я бы порекомендовал пароль приложения, так как он ограничен, предназначен для одноразового использования и не позволит вам войти в GUI.Тогда ваш вызов будет выглядеть примерно так: curl -u myuser:myapppassword -X POST -H "Content-Type: application/json" -d '{"key": "key content goes here"}' https://api.bitbucket.org/2.0/users/myuser/ssh-keys.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...