2013-07-16 1 views
25

Я пишу сценарий, чтобы легко развернуть приложение. Код приложения хранится в частном репозитории BitBucket.Загрузите приватный файл zip-файла репозитория BitBucket, используя http-аутентификацию

Я хотел был бы получить архив zip архива. Я попытался проверки подлинности с помощью следующего кода:

https://user:[email protected]/user/repo/get/commit.zip

Однако вместо выполнения этой задачи он перенаправляет на страницу входа на BitBucket.

ответ

28

Для того, чтобы скачать архивный копию частного Bitbucket хранилища из командной строки, используйте следующую команду:

curl --digest --user <username>:<password> https://bitbucket.org/<username>/<repository>/get/<branchname>.zip -o <branchname>.zip 

где <username> и <password> являются имя учетной записи Bitbucket и пароль, <repository> является репо имя и <branchname> является филиалом. Если вы хотели бы загрузить конкретный коммит, использовать SHA-1 хеш коммита вместо <branchname>.

Флаг --digest для вашей безопасности и настоятельно рекомендуется. Выполняет аутентификацию так, чтобы ваше имя пользователя и пароль были не отправлены в поле. Флаг -o отправляет результат команды curl на диск в виде файла вместо потоковой передачи через экран вашего терминала.

Примечание: схема аутентификации Bitbucket не совместима с wget. Вот почему вы должны использовать curl.

Для общественного Bitbucket репозиториев команды:

curl https://bitbucket.org/<username>/<repository>/get/<branchname>.zip -o <branchname>.zip 

Или поочередно, вы можете используйте wget для публичных репозиториев, так как не требуется аутентификация:

wget https://bitbucket.org/<username>/<repository>/get/<branchname>.zip 

В дополнение к .zip формат, вы можете скачать репозитории в .gz и .bz2 ароматов. Просто замените .zip в коде выше либо .gz, либо .bz2, чтобы загрузить репозиторий в сжатом формате по вашему выбору.

+4

Я попытался 'локон --digest --user : https://bitbucket.org/ //загрузки/ -o' загрузить из Загрузите область, но она не работает. Любая идея, почему бы и нет? –

+0

Работал как очарование для меня. Благодаря! Теперь я создал скрипт автообновления для моего сайта! – alexander7567

+1

@FaheemMitha, для загрузки из области загрузки вам нужно добавить опцию '-L', например:' curl -L --digest --user : https://bitbucket.org/ //downloads/ -o ' – user1027169

29

Лично я не хотел вставлять свой пароль в свой сценарий, чтобы выполнить это. Таким образом, хитрость в том, чтобы выполнить следующую команду, после добавления открытого ключа на ваш счет Bitbucket:

git archive --remote=ssh://[email protected]/your_bitbucket_username/your_repository.git --format=zip --output="name_of_your_desired_zip_file.zip" master 

У меня есть несколько ключей на моей системе, если вы тоже, вы хотите создать конфигурационный файл в вашем ~/.ssh, который указывает использование определенного ключа для соединений битбакет.

~/.ssh/конфигурации

Host bitbucket.org 
    StrictHostKeyChecking no 
    IdentityFile /home/me/.ssh/my_private_key 
+2

Это просто способ сделать, любой другой способ аутентификации с четким текстовым паролем неверен, если вы не заботитесь о безопасности. – thomas

2

GrowlTigers ответ велик, просто обновление: с Wget, кажется, работает сейчас тоже:

wget --user=<username> --password='<password>' https://bitbucket.org/<user>/<repo>/get/<filename>.tar.gz 
6

Для тех, кто хочет скачать один файл из частного репо на bitbucket, я пробовал выше, но никто не работал. В конце концов я получил это работает с командой ниже:

wget --user=<user> --password=<password> https://bitbucket.org/<user>/<repo>/raw/master/<filename> 
+2

Это тоже сработало для меня, хотя я предпочитаю использовать '-ask-password', а не' --password = ', чтобы мой пароль не был видимым и/или не хранился нигде как обычный текст. – Jonny

9

--digest флаг для вашей безопасности, и настоятельно рекомендуется. Он выполняет аутентификацию, так что ваше имя пользователя и пароль не отправляются в поле clear.

Это не так.

Bitbucket исключительно использует TLS, и поэтому ни в коем случае ничего не происходит через провод в ясном тексте. В результате Digest не дает преимуществ по сравнению с Basic Auth. На самом деле, учитывая, что дайджест инициируется сервером, вы получаете дополнительный сервер в обратном направлении, запрашивающий предоставленное сервером nonce.

Наше использование дайджеста было избыточным и устаревшим с тех пор, как мы прекратили предлагать незашифрованный HTTP-доступ несколько лет назад и сохранялись только потому, что были скрипты на основе curl, выполняющие --digest, как было предложено @GrowlTiger.

Фактически, мы собираемся отключить дайджест всего 1 мая, после чего curl --digest перестанет работать.

Более подробную информацию можно найти: https://blog.bitbucket.org/2015/04/03/fare-thee-well-digest-access-authentication/

+0

Это не ответ на исходный вопрос, а комментарий к другому ответу.Повторите отправку в качестве комментария к оскорбительному ответу (или прикрепленному к самому вопросу). –

Смежные вопросы