web-dev-qa-db-ja.com

HTTP認証を使用してプライベートBitBucketリポジトリのZipファイルをダウンロードする

アプリケーションを簡単にデプロイするためのスクリプトを書いています。アプリケーションのコードは、プライベートのBitBucketリポジトリに保存されます。

コミットのZipファイルをダウンロードできるようにしたいと思います。私は次のコードで認証しようとしました:

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

ただし、タスクを完了する代わりに、BitBucketのログインページにリダイレクトします。

27
user2117190

個人的に、これを実現するためにスクリプトにパスワードを入れたくありませんでした。そのため、公開鍵をbitbucketアカウントに追加した後、次のコマンドを実行するのがコツです。

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

私のシステムには複数のキーがあります。もしそうするなら、bitbucket接続に特定のキーを使用することを指定する〜/ .sshディレクトリ内に設定ファイルを作成したいと思うでしょう。

〜/ .ssh/config

Host bitbucket.org
  StrictHostKeyChecking no
  IdentityFile /home/me/.ssh/my_private_key
33
Nick

コマンドラインからprivateBitbucketリポジトリの圧縮されたコピーをダウンロードするには、次を使用します。

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

ここで、<username><password>はBitbucketアカウント名とパスワード、<repository>はレポジトリ名、<branchname>はブランチです。特定のコミットをダウンロードする場合は、<branchname>.の代わりにコミットのSHA-1ハッシュを使用します

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

注: Bitbucketの認証スキームはwget.と互換性がないため、curl.を使用する必要があります。

publicBitbucketリポジトリの場合、コマンドは次のとおりです。

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に置き換えるだけで、選択した圧縮形式でリポジトリをダウンロードできます。

28
GrowlTiger

--digestフラグはセキュリティのためであり、強くお勧めします。ユーザー名とパスワードが平文で送信されないように認証を実行します。

これは真実ではありません。

BitbucketはTLSのみを使用しているため、クリアテキストで何も送信されることはありません。その結果、ダイジェストは基本認証よりも利点がありません。実際、ダイジェストがサーバーで開始されることを考慮すると、サーバーが提供するナンスを要求する追加のサーバーラウンドトリップが発生します。

ダイジェストの使用は冗長であり、数年前に暗号化されていないHTTPアクセスの提供を停止して以来廃止されており、--digest @GrowlTigerの提案どおり。

実際、5月1日にダイジェストを完全にオフにしようとしています。その後、curl --digestは機能しなくなります。

より多くの情報を見つけることができます: https://blog.bitbucket.org/2015/04/03/fare-thee-well-digest-access-authentication/

11
Erik van Zijst

Bitbucketのプライベートリポジトリから単一のファイルをダウンロードしたい人のために、私は上記を試しましたが、何も動作しませんでした。最後に、以下のコマンドで動作させました:

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

GrowlTigersの答えは素晴らしいです、ただの更新です:wgetでは、今でも動作するようです:

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

使用しているツールは、URLの基本認証資格情報をサポートしていますか? PHP Bitbucketプライベートリポジトリのダウンロード用)のダイジェスト認証付きのCurlリクエスト は、

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

動作します。

1
Joe

Bitbucketの新しいバージョンでこれが機能することがわかりました

repository_list=" a b c"
for repository in ${repository_list}
do
    echo "Getting: ${repository}"
    curl --user userid:password \
         http://bitjira.xxx.com:7990/rest/api/latest/projects/WP/repos/${repository}/archive?format=Zip  \
         -o ${repository}.Zip
done
0
Peter Lenahan