如何使用应用程序密码访问Bitbucket

110

我已按照此处的说明创建了一个应用程序密码。

但现在,我该如何使用这个应用程序密码访问存储库呢?
URL会是什么?
请有人指导我到一个展示示例的页面吗?

下面是github的代码。我怎样做才能在bitbucket上实现同样的效果呢?

var githubToken = "[token]";
var url = "https://github.com/[username]/[repository]/archive/[sha1|tag].zip";
var path = @"[local path]";


using (var client = new System.Net.Http.HttpClient())
{
    var credentials = string.Format(System.Globalization.CultureInfo.InvariantCulture, "{0}:", githubToken);
    credentials = Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(credentials));
    client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", credentials);
    var contents = client.GetByteArrayAsync(url).Result;
    System.IO.File.WriteAllBytes(path, contents);
}

更新

前往个人设置,然后前往以下所示的应用程序密码

创建Bitbucket应用程序密码


你问的是关于Bitbucket的问题,但是你的代码引用了githubTokenhttps://github.com/。你实际上想使用哪个系统? - Chris
1
@Chris,github只是一个例子:下面是github的代码。我如何在bitbucket上实现它? - JRichardsz
7个回答

134

由于问题是“如何访问存储库”,也许对某些人有用:
您还可以使用Bitbucket的“应用程序密码”来使用HTTPS上的Git。

git clone https://USERNAME:APP_PASSWORD@bitbucket.org/OWNER/REPO.git
(或者,如果您想避免以明文形式存储密码:
在上面的URL中省略 :APP_PASSWORD ,并在 Git 提示时提供 App 密码。)

这可能对于 CI 有用(尽管使用 SSH 进行 Git 更好)。


78
如果您已经克隆了代码库,请使用以下命令:git remote set-url origin https://USERNAME:APP_PASSWORD@bitbucket.org/OWNER/REPO.git。请注意,此命令旨在设置代码库的远程地址,以便您可以推送您的更改。 - junho
2
好的。这确实不是很明显。您需要在SourceTree设置中设置远程URL/路径,如下所示:https://<user-name>:<app-password>@bitbucket.org/path-to-source-master/src/master/用户名是主帐户用户名,在https://bitbucket.org/account/settings/的帐户设置下的Bitbucket个人资料设置(用户名)下找到的。应用程序密码设置在https://bitbucket.org/account/settings/app-passwords/中。 - David Lipschitz
1
似乎这个方法正在以明文形式暴露密码。 - QT-1

110

你可以按照以下步骤执行此请求:

curl -u "walery2iq:<appPassword>" "https://api.bitbucket.org/2.0/repositories/[yourRepo]"

这里的重要事项是 - 使用您的用户名,而不是电子邮件地址。 这很重要,因为在Bitbucket本身上登录时,您使用的是电子邮件而不是用户名 :D

您可以在此处找到您的用户名:

设置 -> 帐户设置 -> 用户名

请参见图片。

使用此用户名 - 而不是您的邮箱地址


24
对我来说,使用 Bitbucket 导入界面的关键是用户名,而不是电子邮件地址。谢谢! - Kevin Condon

75

您需要在 bitbucket 控制台上创建您的“应用程序密码”。在您的头像下 -> 个人设置 -> 访问管理 -> 应用程序密码。创建应用程序密码并记下它。

完成后,打开您的 Git Bash 并使用以下命令设置远程源 -

git remote set-url origin https://<Your_Account_Name>:<App_Password>@bitbucket.org/<Your_Account_Name>/<Repo_Name>.git

1
在最后一部分,您不需要再次提供Account_name,而是需要为repo提供路径。bitbucket.org/OWNER/REPO.git - mujaffars
1
这是对我有效的一个。但或许需要做一点小修改:应该是https://<your_username>:<app_password>@bitbucket.org/... - dapidmini

20

如果你启用了两步验证,那么我可以克隆代码库但无法进行推送。我使用git而非curl解决了这个问题:

git push https://<username>:<GENERATED-APP-PASS>@bitbucket.org/<username>/<repo>.git

https://bitbucket.org/account/admin/app-passwords生成应用程序密码。


8
git remote set-url origin https://[app-label]:[app-password]@bitbucket.org/[your-repo].git

1
没有起作用。尝试推送后显示凭据无效。Kunal Keshari的解决方案有效。您需要使用Account_Name而不是app-label。并且您需要在bitbucket.org/之后重复它。 - Ville Miekk-oja

1
这对我很有帮助,检查一下git设置中的使用凭证助手。也就是说,在首选项->版本控制->转到git -> 使用凭证助手中进行设置。

1

Git在底层使用libcurl,因此您可以将密码保存在~/.netrc文件中:

machine bitbucket.org login USER password PAZZ

并且要避免将密码泄露到shell历史记录中:

git clone https://$USER@bitbucket.org/$WORKSPACE/$REPO.git

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接