使用项目访问令牌访问GitLab仓库

32
根据文档,使用项目访问令牌应该可以访问GitLab存储库:project access tokens

用户名设置为 project_{project_id}_bot,例如project_123_bot。

不要担心这是一个谎言 - 在我的情况下,实际用户称为 project_4194_bot1 ; 显然,他们会递增一个数字以获取后续的令牌。无论哪种方式 - 我已经尝试过带或不带结尾的数字 1 - 我都期望
git clone "https://project_4194_bot1:$PROJECT_TOKEN@my.gitlab.host/my-group/my-project.git"

要成功,就像使用my.username:$ PERSONAL_TOKEN一样(它完美地工作)。然而,我得到了

remote: HTTP Basic: Access denied
fatal: Authentication failed for '<snip>'

这里可能发生了什么?我如何使用项目访问令牌访问GitLab存储库?


虽然我们似乎还没有走得太远,但是这个令牌似乎具有足够的权限:

输入图像描述


使用SSH密钥的解决方法按照文档所述可以工作,但感觉过于复杂。 - Raphael
您好,已经添加了!实际上我不知道在哪里找到了这个解决方案,但它在我的一个脚本中。这个解决方案应该在 GitLab 文档中有记录,但我找不到它。 - Rafael-WO
1
@Rafael-WO 我相当确定我已经阅读了关于这个主题的所有内容。如果有时间,我会再次检查并可能提出更改建议。 - Raphael
4个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
51

看起来使用项目名称作为用户名可以工作。在您的情况下,将project_4194_bot1替换为my-project即可:

似乎使用项目名称作为用户名是可行的。在你的情况下,用my-project代替project_4194_bot1应该可以:

git clone "https://my-project:$PROJECT_TOKEN@my.gitlab.host/my-group/my-project.git"

编辑:正如其他人正确指出的那样,实际上可以使用任何非空值作为用户名(请参见文档)。


3
这个回答有误导性。根据GitLab文档的说法,使用HTTP基本身份验证时,请使用任何非空值作为用户名,并将项目访问令牌用作密码。 - Gavin Uberti
正如Gavin所说,我尝试使用任何名称代替'my-project',并且它可以工作。 - An_Bk
你可以使用预定义变量使其更加通用化git clone https://${CI_PROJECT_NAME}:${PROJECT_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}.git - Alec the Geek
甚至更简单的是 git clone https://$CI_PROJECT_NAME:$PROJECT_TOKEN@$CI_SERVER_HOST/$CI_PROJECT_PATH.git - Stefan

8

来自GitLab文档:

使用 Git 时,使用 HTTP 基本身份验证时,请使用:

  • 任何非空值作为用户名。
  • 项目访问令牌作为密码。

在之前的 GitLab 版本中,需要使用project_4194_bot1 作为用户名。但是,当前版本允许您使用任何用户名:

git clone "https://anything:$PROJECT_TOKEN@my.gitlab.host/my-group/my-project.git"

0

我发现根据git版本,如果令牌是项目访问令牌,则“用户”可能为空或为随机字符串。

git clone "https://<$USER>:$PROJECT_TOKEN@my.gitlab.host/my-group/my-project.git"

4
欢迎来到StackOverflow!您的新答案似乎与一年前获得采纳的答案相矛盾。向旧问题添加新答案没有任何问题(请参见“我对一个或多个旧问题有新答案”),但如果您认为“$TOKEN_NAME”比“my-project”更正确,请解释一下,以便其他用户受益。谢谢,享受这个网站吧! - B. Shefter

0
我遇到了类似的问题:我无法找到一种方法在不提供密码的情况下从客户端访问我的存储库。对我有效的解决方案是使用以下格式的URL:
https://<token name>:<token>@gitlab.address/group/project.git
请注意,任何其他格式都无法正常工作。 关于详细信息,我正在使用 argocd 并尝试持续部署私有仓库的文件。希望这能帮到你!

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