2013-07-16 3 views
25

쉽게 응용 프로그램을 배포하는 스크립트를 작성하고 있습니다. 응용 프로그램의 코드는 비공개 BitBucket 저장소에 저장됩니다.http 인증을 사용하여 개인 BitBucket 저장소 zip 파일 다운로드

커밋 된 zip 파일을 다운로드하고 싶습니다. 그러나

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

을, 대신이의 Bitbucket에 로그인 페이지로 리디렉션 작업을 달성 : 나는 다음과 같은 코드로 인증을 시도했습니다.

답변

28

다음

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

<username><password>가의 Bitbucket 계정 이름과 암호이며, <repository>는 REPO입니다 이름은 <branchname>입니다. 오히려 특정 커밋 다운로드 줄 경우, --digest 플래그는 보안을 위해, 그리고 이 좋습니다 <branchname>.

대신에 커밋의 SHA-1 해시를 사용합니다. 사용자 이름과 암호가 이 아니고이 아닌 것으로 인증되도록 인증을 수행합니다. -o 플래그는 터미널 화면에서 스트리밍하는 대신 curl 명령의 출력을 파일로 디스크에 보냅니다.

참고 :

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

또는 교대로, 당신은 할 수있다 :의 Bitbucket의 인증 방식은 공공의 Bitbucket를 들어 curl.

를 사용해야하는 이유 명령입니다 저장소 즉 wget.와 호환되지 않습니다 인증이 필요 없으므로 공용 저장소에 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/ //다운로드/ -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 디렉토리

~/스푸핑/설정 GrowlTigers 대답

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

이것은 보안을 염려하지 않는 한, 일반 텍스트 암호로 인증하는 다른 방법은 잘못되었습니다. – thomas

2

, 그냥 업데이 트 중대하다 : 너무 지금 작동하는 것 같다 wget과 함께 : 사람들을 위해

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

원하는 bitbucket에 개인 repo에서 하나의 파일을 다운로드, 나는 위의 시도했지만 아무도 일했습니다. 마지막으로 나는 아래의 명령으로 작업을 가지고 :

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

암호를 볼 수 없게하거나 평범한 텍스트로 저장할 필요가 없도록하기 위해서'--password = '대신에'--ask-password'를 사용하는 편이 낫지 만 이것은 저에게도 도움이되었습니다. – Jonny

9

--digest 플래그는 보안을 위해, 그리고 것이 좋습니다. 사용자 이름과 암호가 명확하게 전달되지 않도록 인증을 수행합니다.

사실이 아닙니다.

Bitbucket은 독점적으로 TLS를 사용하므로 아무 것도 일반 텍스트로 전달되지 않습니다. 따라서 다이제스트는 기본 인증보다 이점을 제공하지 않습니다. 실제로 다이제스트가 서버에 의해 시작된 것으로 간주하면 서버에서 제공 한 nonce를 요청하는 추가 서버 왕복이 발생하게됩니다.

우리는 몇 년 전에 암호화되지 않은 HTTP 액세스를 제공하지 않았고 @GrowlTiger에서 제안한대로 --digest을 수행하는 컬 기반 스크립트가 있었기 때문에 보관 된 이후로 다이제스트 사용이 중복되고 더 이상 사용되지 않습니다.

실제로 우리는 5 월 1 일에 다이제스트를 모두 해제하려고합니다. 그 후에는 curl --digest이 작동을 멈 춥니 다.

더 많은 정보를 찾을 수 있습니다 : https://blog.bitbucket.org/2015/04/03/fare-thee-well-digest-access-authentication/

+0

이것은 초기 질문에 대한 대답이 아니라 다른 대답에 대한 설명입니다.문제의 해답에 대한 의견으로 다시 게시하거나 질문 자체에 첨부하십시오. –

관련 문제