2013-07-16 15 views
25

私は簡単にアプリケーションをデプロイするためのスクリプトを作成しています。アプリケーションのコードは、専用のBitBucketリポジトリに格納されています。http認証を使用してプライベートBitBucketリポジトリzipファイルをダウンロードします。

コミットのzipファイルをダウンロードしたいと思っています。代わりに、それはのBitbucket上のログインページにリダイレクトし、タスクを達成するための、しかし

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

:私は、次のコードを使用して認証しようとしました。

答えて

1

使用しているツールでURLの基本認証情報がサポートされていますか? Curl request with digest auth in PHP for download Bitbucket private repositoryは、次のことを強く示しています。

curl --user user:pass https://bitbucket.org/user/repo/get/commit.zip >commit.zip 

作品。次を使用し、コマンドラインからプライベートのBitbucketリポジトリのzip形式のコピーをダウンロードするために

28

<username><password>はのBitbucketのアカウント名とパスワードです
curl --digest --user <username>:<password> https://bitbucket.org/<username>/<repository>/get/<branchname>.zip -o <branchname>.zip 

<repository>はレポです名前は<branchname>です。特定のコミットをダウンロードする場合は、<branchname>.の代わりにSHA-1ハッシュを使用してください。

--digestフラグはセキュリティのためのもので、をお勧めします。あなたのユーザ名とパスワードがではなく、がクリアで送信されるように認証が行われます。 -oフラグは、curlコマンドの出力をターミナル画面上でストリーミングするのではなく、ファイルとしてディスクに送ります。

注:のBitbucketの認証方式を使用すると、公共のBitbucketは、コマンドをリポジトリのcurl.

を使用しなければならない理由であるwget.と互換性がありませんです。

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/ / /ダウンロード/ -o ' – user1027169

29

個人的には、これを達成するために自分のパスワードをスクリプトに入れたくありませんでした。だから、トリックは、あなたのビットバケットアカウントに公開鍵を追加した後、次のコマンドを実行することでした:

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/configに

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のプライベートレポから1つのファイルをダウンロードすると、私は上記を試しましたが、うまくいきませんでした。最後に、私は以下のコマンドでの作業それを得た:

​​
+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

これは最初の質問に対する回答ではなく、別の回答への解説です。問題の解答(または質問自体に添付)にコメントとして再投稿してください。 –

関連する問題