Verwenden des Gitlab-Tokens zum Klonen ohne Authentifizierung


139

Ich möchte das Gitlab-Repository ohne Aufforderung zur Eingabe meines Automatisierungsskripts klonen, indem ich mein privates Token aus meinem Gitlab-Konto verwende.

Kann mir jemand eine Probe geben?

Ich weiß, dass ich dies mit Benutzer und Passwort tun kann:

git clone https://" + user + ":" + password + "@" + gitlaburl;

und ich weiß, dass es mit ssh key möglich ist

Beide Optionen reichen jedoch nicht aus


20
git clone https://<token-name>:<token>@gitlaburl
Kinght

@Kinght 金 Nur dein Befehl hat funktioniert !!. Vielen Dank :-)
Hussain K

Antworten:


194

Ich weiß, das ist alt, aber so machst du es:

git clone https://oauth2:ACCESS_TOKEN@somegitlab.com/vendor/package.git


3
Dies funktionierte für mich unter GitLab 8.5.7 Enterprise Edition.
Ben Patterson

1
Funktioniert hier (GitLab Community Edition 8.16.5 064dab1)
Martin M.

5
Es klappt! Ich frage mich, warum auf gitlab.com in Projektdetails nicht die vollständige Befehlssyntax angegeben wird: - ((
FR

Funktioniert für Gitlab 10.4.4, aber Sie müssen ein apiToken erstellen . A read_userkann nur Repos unter/users
Kurt

2
Wie benutzt man das ssh?
Hemu

41

Sie können es so machen:

git clone https://gitlab-ci-token:<private token>@git.example.com/myuser/myrepo.git

2
Dies scheint richtig, aber es schlägt immer die Authentifizierung für mich fehl :(
Randyaa

das gleiche für mich: fatal: Authentifizierung fehlgeschlagen für
vogash

4
<privates Token> muss durch das Token des CI-Läufers ersetzt werden, nicht durch das private Token des Kontos.
Kip

2
Ich denke, Sie sollten auch in der Lage sein, Ihr persönliches Token-Recht @tim
Gobi Dasu

Sie können das projektspezifische ci-Token verwenden (Builds aktivieren und dann zur Projekt- / Läufer-Konfiguration wechseln).
BM5k

41

Das Gitlab hat viele Token:

  • Privater Token
  • Persönliches Zugriffstoken
  • CI / CD mit Token

Ich habe nur das Personal Access Token mit GitLab Community Edition 10.1.2 getestet . Beispiel:

git clone https://gitlab-ci-token:${Personal Access Tokens}@gitlab.com/username/myrepo.git


git clone https://oauth2:${Personal Access Tokens}@gitlab.com/username/myrepo.git

oder mit Benutzername und Passwort:

git clone https://${username}:${password}@gitlab.com/username/myrepo.git

oder indem Sie Ihr Passwort eingeben:

git clone https://${username}@gitlab.com/username/myrepo.git

Aber das private Token scheint nicht funktionieren zu können.


5
Beachten Sie, dass private Token zugunsten persönlicher Zugriffstoken in GitLab 10.2 entfernt wurden: about.gitlab.com/2017/09/22/gitlab-10-0-released/…
David Planella

26

Verwenden Sie das Token anstelle des Kennworts (das Token muss über einen API-Bereich verfügen, damit der Klon zugelassen wird):

git clone https://username:token@gitlab.com/user/repo.git

Getestet gegen 11.0.0-ee.


Ja, das funktioniert bei mir. Token kann als Passwort verwendet werden.
CWTuan

1
Für Leute, die dies googeln: Dies ist das, was Sie möchten, wenn Sie persönliche Zugriffstoken über HTTPS auf gitlab.com verwenden.
Adam Baxter

14

Sie können das Runner-Token für CI / CD-Pipelines Ihres GitLab-Repos verwenden.

git clone https://gitlab-ci-token:<runners token>@git.example.com/myuser/myrepo.git

Wo <runners token>kann man bekommen von:

git.example.com/myuser/myrepo/pipelines/settings

oder indem Sie auf klicken Settings icon -> CI/CD Pipelineund auf der Seite nach Runners Token suchen

Screenshot der Position des Läufer-Tokens: Screenshot der Position des Läufer-Tokens


5
Hinweis: Der Runner-Token ist jetzt veraltet.
Arihant Godha

@ ArihantGodha Quelle?
miq

2
@miq siehe hier (Stand> = 8.12)
Yan Foto

1
Dieses Format ist jetzt veraltet, siehe stackoverflow.com/questions/25409700/…
Muhan Alim

Funktioniert nicht in der GitLab CI-Pipeline. Aber diese Zeile funktioniert:git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/...
Slawa

12

Wenn Sie bereits über ein Repository verfügen und nur die Art und Weise geändert haben, wie Sie sich bei MFA authentifizieren, können Sie Ihren remote originHTTP-URI so ändern , dass Ihr neues API-Token wie folgt verwendet wird:

git remote set-url origin https://oauth2:TOKEN@ANY_GIT_PROVIDER_DOMAIN/YOUR_PROJECT/YOUR_REPO.git

Und Sie müssen das Repository überhaupt nicht neu klonen.


3
git clone https://oauth2:TOKEN@ANY_GIT_PROVIDER_DOMAIN/YOUR_PROJECT/YOUR_REPO.githat auch für mich gearbeitet, danke !! Ich werde diesen Thread mit meiner richtigen Lösung beantworten.
Rutrus

10

Eine Möglichkeit ist die Verwendung eines Bereitstellungstokens ( https://docs.gitlab.com/ee/user/project/deploy_tokens ). Verwenden Sie nach dem Erstellen des Tokens:

git clone https://<username>:<deploy_token>@gitlab.example.com/tanuki/awesome_project.git 

wie im obigen Link erwähnt.


Dies scheint auch nicht mit npm install auf einem neuen Docker-Container zu funktionieren, standardmäßig ssh.
Vix

Wirklich nicht funktionieren.
rios0rios0

10

Ab hier 8.12wird das Klonen mit dem HTTPS+ Runner-Token nicht mehr unterstützt, wie hier erwähnt :

In 8.12 haben wir die Build-Berechtigungen verbessert. Das Klonen von Projekten mit Runner-Token wird von nun an nicht mehr unterstützt (es funktionierte tatsächlich zufällig und war nie eine vollwertige Funktion, daher haben wir dies in 8.12 geändert). Sie sollten stattdessen ein Build-Token verwenden.

Dies ist hier ausführlich dokumentiert - https://docs.gitlab.com/ce/user/project/new_ci_build_permissions_model.html .


1
Es ist nicht möglich, Läufer-Token zu verwenden, aber es werden persönliche Zugriffstoken verwendet. Bitte sehen Sie meine Antwort: stackoverflow.com/questions/25409700/…
Muhan Alim

@MuhanAlim Ich würde niemandem empfehlen, sein gesamtes Konto mit Zugriffstoken freizulegen. Deshalb werden sie Private Access Tokens genannt !
Yan Foto

In der Frage wird nichts über die Veröffentlichung des Schlüssels erwähnt, sondern nur, wie der Schlüssel anstelle eines Benutzernamens und eines Kennworts zum Klonen verwendet wird. Aber dass es ein guter Punkt ist, würde ich niemandem empfehlen, die Schlüssel an einem öffentlichen Ort zu verwenden.
Muhan Alim

1
Automatisierungsskript impliziert, dass die gesamte Prozedur nicht lokal ausgeführt wird. Wahrscheinlich irgendwo, wo auch andere Zugang haben.
Yan Foto

8

In einer GitLab CI-Pipeline CI_JOB_TOKENfunktioniert die Umgebungsvariable für mich:

git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/...

Quelle: Gitlab Docs

Übrigens .gitlab-ci.ymlhilft das Setzen dieser Variablen beim Debuggen von Fehlern.

variables:
    CI_DEBUG_TRACE: "true"

2

Ich habe SSH mit der Einstellung für Projektbereitstellungsschlüssel verwendet (schreibgeschützt).


Ich auch, weil ich GIT_STRATEGY benutze: keine.
Aalex Gabi

1

Um meine Zukunft glücklich zu machen: RTFM - benutze überhaupt nicht das Gitlab-Ci-Token, sondern die .netrcDatei.

Es gibt einige wichtige Punkte:

  1. echo -e "machine gitlab.com\nlogin gitlab-ci-token\npassword ${CI_JOB_TOKEN}" > ~/.netrc
  2. Vergessen Sie nicht, "gitlab.com" durch Ihre URL zu ersetzen!
  3. Versuchen Sie nicht, klug zu sein und die .netrc-Datei direkt zu erstellen - gitlab ersetzt nicht die $CI_JOB_TOKENin der Datei enthaltene!
  4. Verwenden Sie https://gitlab.com/whatever/foobar.com- nicht ssh://git@foobar, nicht git+ssh://, nichtgit+https:// . Sie benötigen auch keine CI-TOKEN-Inhalte in der URL.
  5. Stellen Sie sicher, dass Sie können git clone [url from step 4]

Hintergrund: Ich habe

fatal: could not read Username for 'https://gitlab.mycompany.com': No such device or address

als ich versuchte, Ansible + Gitlab + Docker so zu machen, wie ich es mir vorstelle. Jetzt gehts.


1

Das Anpassen der URL ist nicht erforderlich. Verwenden Sie einfach eine Git-Konfiguration für Gitlab-Token wie z

git config --global gitlab.accesstoken {TOKEN_VALUE}

erweiterte Beschreibung hier


1

Viele der obigen Antworten sind nahe beieinander, aber sie erhalten eine ~ usernameSyntax für deployToken, die falsch sind. Es gibt andere Arten von Token, aber deploy tokengenau das bietet gitlab (mindestens ab 2020) pro Repo , um einen benutzerdefinierten Zugriff zu ermöglichen, einschließlich schreibgeschütztem Zugriff.

Finden Sie aus a repository(oder group) das settings-> repository-> deploy tokens. Erstellen Sie eine neue. A usernameund tokenFeld werden erstellt. Das usernameist kein fester Wert standardmäßig; Es ist einzigartig für dieses Token.

git clone https://<your_deploy_token_username>:<the_token>@gitlab.com/your/repo/path.git

getestet auf gitlab.com öffentliches, kostenloses Konto.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.