【问题标题】:Download private BitBucket repository zip file using http authentication使用 http 身份验证下载私有 BitBucket 存储库 zip 文件
【发布时间】:2013-07-16 16:32:12
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: git http bitbucket


    【解决方案1】:

    就个人而言,我不想将密码放入我的脚本中来完成此操作。所以诀窍是在将您的公钥添加到您的 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
    

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

    ~/.ssh/config

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

    【讨论】:

    • 这只是方法,任何其他使用明文密码进行身份验证的方法都是错误的,除非您不关心安全性。
    【解决方案2】:

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

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

    其中&lt;username&gt;&lt;password&gt; 是Bitbucket 帐户名和密码,&lt;repository&gt; 是repo 名称,&lt;branchname&gt; 是分支。如果您希望下载特定的提交,请使用提交的 SHA-1 哈希代替 &lt;branchname&gt;.

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

    注意: Bitbucket 的认证方案与wget. 不兼容,所以必须使用curl.

    对于 public Bitbucket 存储库,命令是:

    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,即可以您选择的压缩格式下载存储库。

    【讨论】:

    • 我试过curl --digest --user &lt;username&gt;:&lt;password&gt; https://bitbucket.org/&lt;usename&gt;/&lt;project&gt;/downloads/&lt;filename&gt; -o &lt;filename&gt;从下载区下载,但是不行。知道为什么不?
    • @FaheemMitha,要从下载区下载,你需要添加-L选项,像这样:curl -L --digest --user &lt;username&gt;:&lt;password&gt; https://bitbucket.org/&lt;usename&gt;/&lt;project&gt;/downloads/&lt;filename&gt; -o &lt;filename&gt;
    • 是否需要--digest,因为它已经超过了https?
    • BitBucket 已弃用,然后关闭了对摘要访问身份验证的支持。 More info.
    • 请注意 wget 现在似乎可以与 Bitbucket 的身份验证方案一起使用。请参阅:laike9m'smstra's 答案。
    【解决方案3】:

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

    这不是真的。

    Bitbucket 专门使用 TLS,因此在任何时候都不会以明文形式通过网络传输任何内容。因此,Digest 与 Basic Auth 相比没有任何优势。事实上,考虑到 Digest 是服务器启动的,您需要额外的服务器往返请求服务器提供的 nonce。

    自从几年前我们停止提供未加密的 HTTP 访问后,我们对 Digest 的使用就一直是多余的并且被弃用了,只是因为 @GrowlTiger 所建议的基于 curl 的脚本在执行 --digest

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

    更多信息请见:https://blog.bitbucket.org/2015/04/03/fare-thee-well-digest-access-authentication/

    【讨论】:

    • 这不是对最初问题的回答,而是对另一个答案的评论。请重新发布作为对违规答案的评论(或附加到问题本身)。
    【解决方案4】:

    对于那些想从 bitbucket 上的私人 repo 下载单个文件的人,我已经尝试了上述方法,但都没有奏效。最后我用下面的命令让它工作了:

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

    【讨论】:

    • 这对我也有用,不过我更喜欢使用--ask-password 而不是--password=&lt;password&gt;,以免我的密码可见和/或以纯文本形式存储在任何地方。
    【解决方案5】:

    GrowlTigers 的回答很棒,只是一个更新:使用 wget 它现在似乎也可以工作了:

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

    【讨论】:

      【解决方案6】:

      您使用的工具是否支持 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
      

      有效。

      【讨论】:

        【解决方案7】:

        我发现这在较新版本的 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
        

        【讨论】:

          猜你喜欢
          • 2012-05-06
          • 2016-07-26
          • 2013-03-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-15
          • 1970-01-01
          相关资源
          最近更新 更多