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

Muky
quelle
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:[email protected]/vendor/package.git

Roshan Gautam
quelle
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
Tim Hughes
quelle
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.

Xuanyuanaosheng
quelle
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:[email protected]/user/repo.git

Getestet gegen 11.0.0-ee.

Zbyněk Winkler
quelle
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

Enlai Chu
quelle
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.

Roger Barreto
quelle
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.

Shahar Taite
quelle
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 .

Yan Foto
quelle
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"
Slawa
quelle
2

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

Laurent
quelle
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.

Martin Thoma
quelle
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

Bizmate
quelle
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.

Mike
quelle