인증없이 복제하기 위해 gitlab 토큰 사용


139

내 gitlab 계정의 개인 토큰을 사용하여 자동화 스크립트를 묻지 않고 gitlab 저장소를 복제하려고합니다.

누군가 나에게 샘플을 제공 할 수 있습니까?

사용자와 비밀번호로 그렇게 할 수 있다는 것을 알고 있습니다.

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

ssh 키로 가능하다는 것을 알고 있습니다.

그러나 두 옵션 모두 충분하지 않습니다


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

1
@Kinght 金 명령 만 작동했습니다 !!. 고마워 :-)
Hussain K

답변:


195

나는 이것이 오래된 것을 알고 있지만 이것이 당신이하는 방법입니다.

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


3
이것은 GitLab 8.5.7 Enterprise Edition에서 나를 위해 일했습니다.
벤 패터슨

1
여기에서 작동 (GitLab Community Edition 8.16.5 064dab1)
Martin M.

5
효과가있다! 프로젝트 세부 사항에 대해 gitlab.com에서 왜 완전한 명령 구문을 제공하지 않는지 궁금합니다 .- ((
FRa

Gitlab 10.4.4에서 작동하지만 api토큰 을 만들어야합니다 . A는 read_user단지 아래의 repos를 읽을 수 있습니다/users
커트

2
이것을 어떻게 사용 ssh합니까?
hemu

41

다음과 같이 할 수 있습니다 :

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

2
이것은 옳은 것처럼 보이지만 항상 나를 위해 인증에 실패합니다 :(
Randyaa

나에게도 동일 : 치명적 : 인증 실패
vogash

4
<비공개 토큰>은 계정의 개인 토큰이 아닌 CI 러너 토큰으로 교체해야합니다.
Kip

2
개인 토큰을 @tim 사용할 수있을 것 같아요
Gobi

프로젝트 특정 ci 토큰을 사용할 수 있습니다 (빌드를 활성화 한 다음 프로젝트 / 런너 구성으로 이동).
BM5k

41

gitlab에는 많은 토큰이 있습니다.

  • 개인 토큰
  • 개인용 액세스 토큰
  • CI / CD 실행 토큰

예를 들어 GitLab Community Edition 10.1.2를 사용하여 개인용 액세스 토큰 만 테스트했습니다 .

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

또는 사용자 이름과 비밀번호를 사용하는 경우 :

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

또는 비밀번호를 입력하여 :

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

그러나 개인 토큰 이 작동하지 않는 것 같습니다.


5
개인 토큰은 GitLab 10.2의 개인 액세스 토큰을 위해 제거되었습니다. about.gitlab.com/2017/09/22/gitlab-10-0-released/…
David Planella

26

암호 대신 토큰을 사용하십시오 (복제를 허용하려면 토큰에 "api"범위가 있어야 함).

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

11.0.0-ee에 대해 테스트되었습니다.


예, 그것은 나를 위해 작동합니다. 토큰은 비밀번호로 사용할 수 있습니다.
cwtuan

1
인터넷 검색 사용자 : gitlab.com에서 HTTPS를 통한 개인 액세스 토큰을 사용하는 경우 원하는 것입니다.
Adam Baxter

14

GitLab 리포지토리의 CI / CD 파이프 라인에 러너 토큰을 사용할 수 있습니다.

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

어디서 <runners token>구할 수 있습니까?

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

Settings icon -> CI/CD Pipeline또는를 클릭 하고 페이지에서 Runners Token을 찾으십시오.

주자 토큰 위치의 스크린 샷 : 주자 토큰 위치의 스크린 샷


5
참고 : 러너 토큰은 더 이상 사용되지 않습니다.
Arihant Godha

@ArihantGodha 소스?
miq

2
@miq 여기를보십시오 (> = 8.12 기준)
Yan Foto

1
이 형식은 현재 사용되지 않으며, 참조하시기 바랍니다 stackoverflow.com/questions/25409700/...
Muhan Alim에

GitLab CI 파이프 라인 내부에서는 작동하지 않습니다. 그러나이 라인은 작동합니다 :git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/...
Slawa

12

이미 리포지토리가 있고 인증 방식을 MFA로 변경 remote origin한 경우 다음과 같이 새 API 토큰을 사용하도록 HTTP URI를 변경할 수 있습니다 .

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

그리고 리포지토리를 전혀 다시 복제 할 필요가 없습니다.


3
git clone https://oauth2:TOKEN@ANY_GIT_PROVIDER_DOMAIN/YOUR_PROJECT/YOUR_REPO.git또한 나를 위해 일했다, 감사합니다 !! 올바른 해결책 으로이 스레드에 대답 할 것입니다.
Rutrus

10

가능한 한 가지 방법은 배포 토큰 ( https://docs.gitlab.com/ee/user/project/deploy_tokens )을 사용하는 것입니다 . 토큰을 만든 후 다음을 사용하십시오.

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

위의 링크에서 언급했듯이.


이것은 새로운 도커 컨테이너의 npm 설치에서 작동하지 않는 것 같습니다. 기본값은 ssh입니다.
Vix

정말 작동하지 않습니다.
rios0rios0

10

현재로 8.12사용하여 복제, HTTPS언급 한 바와 같이, 더 이상 지원되지 않는 토큰 + 주자 여기를 :

8.12에서는 빌드 권한이 향상되었습니다. 러너 토큰을 사용하여 프로젝트를 복제 할 수 있었기 때문에 지금부터 지원되지 않습니다 (실제로 우연히 작동했으며 결코 본격적인 기능이 아니므로 8.12에서 변경했습니다). 대신 빌드 토큰을 사용해야합니다.

이것은 https://docs.gitlab.com/ce/user/project/new_ci_build_permissions_model.html에 널리 문서화되어 있습니다 .


1
러너 토큰을 사용할 수 없지만 개인 액세스 토큰을 사용하고 있습니다. 내 답변을 참조하십시오 : stackoverflow.com/questions/25409700/…
Muhan Alim

@MuhanAlim 아무도 액세스 토큰을 사용하여 전체 계정을 공개하지 않는 것이 좋습니다. 그래서 개인 액세스 토큰 이라고합니다 !
Yan Foto

이 질문에는 키를 공개하는 방법에 대한 언급이 없으며 복제를 위해 사용자 이름과 암호 대신 키를 사용하는 방법 만 언급되어 있습니다. 그러나 좋은 지적이므로 공개 키를 사용하는 사람은 누구나 사용하지 않는 것이 좋습니다.
Muhan Alim

1
자동화 스크립트 는 전체 프로 시저가 로컬로 실행되지 않음을 의미합니다. 아마도 다른 사람들도 접근 할 수있는 곳일 것입니다.
Yan Foto

8

GitLab CI 파이프 라인에서 CI_JOB_TOKEN환경 변수가 저에게 효과적입니다.

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

출처 : Gitlab Docs

BTW,이 변수를 설정하면 .gitlab-ci.yml오류를 디버그하는 데 도움 이 됩니다.

variables:
    CI_DEBUG_TRACE: "true"

2

프로젝트 별 배포 키 설정을 사용하여 SSH를 사용했습니다 (읽기 전용).


나도 GIT_STRATEGY를 사용하고 있기 때문에 : 없음.
Aalex Gabi

1

내 미래를 행복하게하려면 : RTFM -gitlab-ci-token을 사용하지 말고 .netrc파일을 사용하십시오.

몇 가지 중요한 사항이 있습니다.

  1. echo -e "machine gitlab.com\nlogin gitlab-ci-token\npassword ${CI_JOB_TOKEN}" > ~/.netrc
  2. "gitlab.com"을 URL로 바꾸는 것을 잊지 마십시오!
  3. 똑똑하지 않고 .netrc 파일을 직접 작성하지 마십시오-gitlab은 $CI_JOB_TOKEN파일 내를 대체하지 않습니다 !
  4. 사용 https://gitlab.com/whatever/foobar.com- 아니 ssh://git@foobar, 아니 git+ssh://, 아니git+https:// . 또한 URL에 CI-TOKEN 자료가 필요하지 않습니다.
  5. 당신이 할 수 있는지 확인 git clone [url from step 4]

배경 : 나는 얻었다

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

내가 상상하는대로 Ansible + Gitlab + Docker를 작동 시키려고했을 때. 이제 작동합니다.



1

위의 많은 답변은 가깝지만 토큰에 username대한 ~ 구문이 deploy잘못되었습니다. 다른 유형의 토큰이 있지만 deploy tokengitlab이 리포 (2020 년 이상 이상) 제공하는 것 입니다 읽기 전용을 포함하여 하는 맞춤형 액세스를 허용합니다.

에서 repository(나 group)에서 찾을 settings-> repository-> deploy tokens. 새로운 것을 만드십시오. usernametoken필드가 만들어집니다. 는 username기본적으로 고정 된 값이 아니다; 이 토큰에 고유합니다.

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

gitlab.com 공개 무료 계정에서 테스트되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.