使用http身份验证下载私有BitBucket存储库zip文件

use*_*190 27 git http bitbucket

我正在编写一个脚本来轻松部署应用程序.应用程序的代码存储在私有BitBucket存储库中.

我希望能够下载提交的zip文件.我尝试使用以下代码进行身份验证:

https://user:pass@bitbucket.org/user/repo/get/commit.zip

但是,它不是完成任务,而是重定向到BitBucket上的登录页面.

Nic*_*ick 33

就个人而言,我不想将我的密码放入我的脚本来实现这一目标.所以诀窍是在将您的公钥添加到您的bitbucket帐户后运行以下命令:

git archive --remote=ssh://git@bitbucket.org/your_bitbucket_username/your_repository.git --format=zip --output="name_of_your_desired_zip_file.zip" master
Run Code Online (Sandbox Code Playgroud)

我的系统上有多个键,如果你也这样做,你需要在〜/ .ssh目录中创建一个配置文件,指定使用特定的键进行bitbucket连接.

的〜/ .ssh /配置

Host bitbucket.org
  StrictHostKeyChecking no
  IdentityFile /home/me/.ssh/my_private_key
Run Code Online (Sandbox Code Playgroud)

  • 这只是一种方法,任何其他用明文密码验证的方法都是错误的,除非你不关心安全性. (2认同)

Gro*_*ger 28

要从命令行下载私有 Bitbucket存储库的压缩副本,请使用以下命令:

curl --digest --user <username>:<password> https://bitbucket.org/<username>/<repository>/get/<branchname>.zip -o <branchname>.zip
Run Code Online (Sandbox Code Playgroud)

其中,<username><password>是到位桶帐户名和密码,<repository>是回购协议名称,<branchname>是分支.如果您更愿意下载特定的提交,请使用提交的SHA-1哈希代替<branchname>.

--digest标志是为了您的安全,强烈建议.它完成身份验证,因此您的用户名和密码不会以明文形式发送.该-o标志将curl命令的输出作为文件发送到磁盘,而不是通过终端屏幕进行流式传输.

注意: Bitbucket的身份验证方案不兼容wget.这就是您必须使用的原因curl.

对于公共 Bitbucket存储库,命令是:

curl https://bitbucket.org/<username>/<repository>/get/<branchname>.zip -o <branchname>.zip
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用wget公共存储库,因为不需要身份验证:

wget https://bitbucket.org/<username>/<repository>/get/<branchname>.zip
Run Code Online (Sandbox Code Playgroud)

.zip格式外,您还可以下载存储库.gz.bz2flavor.只需.zip在上面的代码中替换为.gz或者.bz2以您选择的压缩格式下载存储库.

  • 我尝试从下载区域下载`curl --digest --user <username>:<password> https://bitbucket.org/ <usename>/<project>/downloads/<filename> -o <filename>` ,但它不起作用.知道为什么不呢? (4认同)
  • BitBucket已弃用,然后关闭对摘要访问身份验证的支持.[更多信息.](https://blog.bitbucket.org/2015/04/03/fare-thee-well-digest-access-authentication) (4认同)

Eri*_*jst 11

--digest标志是为了您的安全,强烈建议.它完成身份验证,因此您的用户名和密码不会以明文形式发送.

这不是真的.

Bitbucket专门使用TLS,因此在任何时候都不会以明文形式通过电线.因此,Digest与Basic Auth相比没有任何好处.实际上,考虑到Digest是服务器启动的,您需要额外的服务器往返请求服务器提供的nonce.

自从几年前我们停止提供未加密的HTTP访问以来,我们对Digest的使用已经被多余和弃用,并且仅仅因为基于卷曲的脚本--digest按照@GrowlTiger的建议进行操作而被保留.

事实上,我们将于5月1日完全关闭Digest,之后curl --digest将停止工作.

可以找到更多信息:https://blog.bitbucket.org/2015/04/03/fare-thee-well-digest-access-authentication/

  • 这不是对最初问题的回答,而是对另一个回答的评论。请重新发布作为对违规答案的评论(或附加到问题本身)。 (2认同)

lai*_*e9m 7

对于那些想要从bitbucket上的私人仓库下载单个文件的人,我已经尝试了上述但没有工作.最后我使用下面的命令:

wget --user=<user> --password=<password> https://bitbucket.org/<user>/<repo>/raw/master/<filename>
Run Code Online (Sandbox Code Playgroud)

  • 这也适用于我,虽然我更喜欢使用`--ask-password`而不是`--password = <password>`以免我的密码可见和/或存储在任何地方作为纯文本. (2认同)

Joe*_*Joe 1

您使用的工具是否支持 URL 中的基本身份验证凭据?在 PHP 中使用摘要身份验证的 Curl 请求下载 Bitbucket 私有存储库强烈暗示:

curl --user user:pass https://bitbucket.org/user/repo/get/commit.zip >commit.zip
Run Code Online (Sandbox Code Playgroud)

作品。