我正在编写脚本以轻松部署应用程序。该应用程序的代码存储在专用的BitBucket存储库中。使用http身份验证下载私人BitBucket存储库zip文件
我想能够下载提交的zip文件。我已经试过认证具有以下代码:
https://user:[email protected]/user/repo/get/commit.zip
然而,而不是实现它重定向到到位桶登录页面的任务。
我正在编写脚本以轻松部署应用程序。该应用程序的代码存储在专用的BitBucket存储库中。使用http身份验证下载私人BitBucket存储库zip文件
我想能够下载提交的zip文件。我已经试过认证具有以下代码:
https://user:[email protected]/user/repo/get/commit.zip
然而,而不是实现它重定向到到位桶登录页面的任务。
您正在使用的工具是否支持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
的作品。
为了在命令行下载私人到位桶仓库的压缩副本,使用以下命令:
curl --digest --user <username>:<password> https://bitbucket.org/<username>/<repository>/get/<branchname>.zip -o <branchname>.zip
其中<username>
和<password>
是到位桶帐户名和密码,<repository>
是回购名称和<branchname>
是分支。如果您宁愿下载特定提交,请使用提交的SHA-1哈希替代<branchname>.
--digest
标记用于保护您的数据,并强烈建议您使用。它完成身份验证,使您的用户名和密码是而不是明确发送。 -o
标志将curl命令的输出作为文件发送到磁盘,而不是通过终端屏幕进行流式传输。
注:到位桶的认证方案不兼容wget.
这就是为什么你必须使用curl.
对于公共到位桶储存库中的命令:
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
,以便以您选择的压缩格式下载存储库。
就我个人而言,我不想把我的密码放到我的脚本中来完成。因此,关键是要运行下面的命令,将你的公钥到您的到位桶帐户后:
git archive --remote=ssh://[email protected]/your_bitbucket_username/your_repository.git --format=zip --output="name_of_your_desired_zip_file.zip" master
我有我的系统上有多个按键,如果你也这样做,你将要在其中创建一个配置文件,您的〜/ .ssh目录指定为特定的密钥使用bitbucket连接。
的〜/ .ssh/config中
Host bitbucket.org
StrictHostKeyChecking no
IdentityFile /home/me/.ssh/my_private_key
这只是一种方式,除非您不关心安全性,否则使用明文密码进行身份验证的任何其他方式都是错误的。 – thomas
GrowlTigers回答是伟大的,只是一个更新:用wget的,似乎现在的工作,也:
wget --user=<username> --password='<password>' https://bitbucket.org/<user>/<repo>/get/<filename>.tar.gz
对于那些谁想要从bitbucket上的私人回购下载单个文件,我已经尝试了上述但没有工作。最后我得到了它与下面的命令工作:
这也适用于我,虽然我更喜欢使用'--ask-password'而不是'--password =
的--digest标志是为了您的安全,并强烈推荐。它完成身份验证,以便您的用户名和密码不会以明文形式发送。
这是不正确的。
Bitbucket专门使用TLS,因此在任何时候任何事情都不会以明文形式通过网络。因此,摘要对基本身份验证没有任何好处。事实上,考虑到摘要是由服务器启动的,您需要额外的服务器往返请求服务器提供的随机数。
自从我们几年前停止提供未加密的HTTP访问以来,我们对摘要的使用一直是多余的并且不推荐使用,因为@GrowlTiger建议使用基于卷曲的脚本来执行--digest
。
事实上,我们即将在5月1日关闭Digest,之后curl --digest
将停止工作。
更多信息,可以发现:https://blog.bitbucket.org/2015/04/03/fare-thee-well-digest-access-authentication/
这不是对最初问题的回答,而是对另一个答案的评论。请重新张贴作为对违规答案的评论(或附加到问题本身)。 –
我试过'卷曲--digest --user: https://bitbucket.org/ / /下载/ -o '从下载下载区域,但它不起作用。任何想法为什么不呢? –
工作就像一个魅力对我来说。谢谢!现在我为我的网站创建了一个自动更新脚本! – alexander7567
@FaheemMitha,要从下载区下载,需要添加'-L'选项,如下所示:'curl -L --digest --user: https://bitbucket.org/ //downloads/ -o ' –
user1027169