usando o token do gitlab para clonar sem autenticação


139

Quero clonar o repositório do gitlab sem solicitar o meu script de automação, usando meu token privado da minha conta do gitlab.

Alguém pode me fornecer uma amostra?

Eu sei que posso fazer isso com usuário e senha:

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

e eu sei que é possível com a chave ssh

mas, ambas as opções não são suficientes


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

1
@ Kinght 金 Apenas seu comando funcionou !!. Muito obrigado :-)
Hussain K

Respostas:


195

Eu sei que isso é antigo, mas é assim que você faz:

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


3
Isso funcionou para mim no GitLab 8.5.7 Enterprise Edition.
Ben Patterson

1
Funciona aqui (GitLab Community Edition 8.16.5 064dab1)
Martin M.

5
Funciona! Eu me pergunto por que gitlab.com sobre detalhes do projeto eles não dão a sintaxe do comando completo: - ((
FRa

Funciona para o Gitlab 10.4.4, mas você precisa criar um apitoken. A read_usersó pode ler repos sob/users
Kurt

2
Como usar isso ssh?
hemu 02/04/19

41

Você pode fazer assim:

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

2
isso parece certo, mas sempre falha de autenticação para mim :(
Randyaa

o mesmo para mim: fatal: A autenticação falhou para
vogash 3/16

4
<token privado> precisa ser substituído pelo token do corredor do IC, não pelo token privado da conta.
Kip

2
eu acho que você também deve ser capaz de usar o seu pessoal @ Tim direito de token
Gobi Dasu

Você pode usar o token ci específico do projeto (ative as compilações e vá para a configuração do projeto / corredores).
26516 BM5k

41

O gitlab possui muitos tokens:

  • Token privado
  • Token de acesso pessoal
  • Token de execução de CI / CD

Testei apenas o Token de Acesso Pessoal usando o GitLab Community Edition 10.1.2 , o exemplo:

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

ou usando nome de usuário e senha:

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

ou digitando sua senha:

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

Mas o token privado parece não funcionar.


5
Note-se que os tokens privadas foram removidos em favor de tokens de acesso pessoal na gitlab 10.2: about.gitlab.com/2017/09/22/gitlab-10-0-released/...
David Planella

26

Use o token em vez da senha (o token precisa ter o escopo "api" para que o clone seja permitido):

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

Testado contra 11.0.0-ee.


Sim, funciona para mim. O token pode ser usado como senha.
Cwtuan

1
Para as pessoas pesquisando no Google: isto é o que você deseja se estiver usando tokens de acesso pessoal por HTTPS no gitlab.com.
Adam Baxter

14

Você pode usar o token de corredores para os pipelines de CI / CD do seu repositório GitLab.

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

Onde <runners token>pode ser obtido em:

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

ou clicando no Settings icon -> CI/CD Pipelinee procure Runners Token na página

Captura de tela do local do token de corredores: Captura de tela do local do token de corredores


5
Nota: O token de corredores foi descontinuado agora.
Arihant Godha 22/09/16

@ArihantGodha fonte?
Miq

2
@miq veja aqui (a partir de> = 8.12)
Yan Foto

1
Agora, este formato foi descontinuado, consulte stackoverflow.com/questions/25409700/…
Muhan Alim 17/17/17

Não funciona de dentro do pipeline do IC do GitLab. Mas esta linha funciona:git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/...
Slawa

12

Se você já possui um repositório e acabou de alterar a maneira como faz a autenticação para o MFA, pode alterar seu remote originURI HTTP para usar seu novo token de API da seguinte maneira:

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

E você não precisará clonar novamente o repositório.


3
git clone https://oauth2:TOKEN@ANY_GIT_PROVIDER_DOMAIN/YOUR_PROJECT/YOUR_REPO.gittambém funcionou para mim, obrigado !! Vou responder a esta discussão com a minha solução correta.
Rutrus 8/11


10

Desde então 8.12, a clonagem usando o HTTPS+ runner token não é mais suportada, conforme mencionado aqui :

Na versão 8.12, melhoramos as permissões de construção. Ser capaz de clonar um projeto usando o token de corredor não é suportado a partir de agora (na verdade, estava funcionando por coincidência e nunca foi um recurso de pleno direito; portanto, mudamos isso em 8.12). Você deve usar o token de compilação.

Isso está amplamente documentado aqui - https://docs.gitlab.com/ce/user/project/new_ci_build_permissions_model.html .


1
Não é possível usar tokens de corredores, mas sim tokens de acesso pessoal. Por favor, veja minha resposta: stackoverflow.com/questions/25409700/…
Muhan Alim 17/17/17

@ MuhanAlim Eu recomendo que ninguém exponha toda a sua conta usando tokens de acesso. É por isso que eles são chamados de Tokens de Acesso Privado !
23617 Yan Foto

A pergunta não menciona nada sobre tornar a chave pública, apenas como usar a chave no lugar de um nome de usuário e senha para clonagem. Mas esse é um bom ponto, eu não recomendaria que ninguém usasse as chaves em qualquer lugar público.
Muhan Alim 17/11/19

1
O script de automação implica que todo o procedimento não está sendo executado localmente. Provavelmente em algum lugar onde outros também tenham acesso.
23617 Yan Foto

8

Dentro de um pipeline de IC do GitLab, a CI_JOB_TOKENvariável de ambiente funciona para mim:

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

Fonte: Documentos do Gitlab

BTW, definir essa variável .gitlab-ci.ymlajuda a depurar erros.

variables:
    CI_DEBUG_TRACE: "true"

2

Fui SSH usando a configuração de chaves de implantação por projeto (somente leitura)


Eu também porque estou usando GIT_STRATEGY: none.
Aalex Gabi

1

Para me deixar feliz no futuro: RTFM - não use o gitlab-ci-token, mas o .netrcarquivo.

Existem alguns pontos importantes:

  1. echo -e "machine gitlab.com\nlogin gitlab-ci-token\npassword ${CI_JOB_TOKEN}" > ~/.netrc
  2. Não se esqueça de substituir "gitlab.com" pelo seu URL!
  3. Não tente ser esperto e crie o arquivo .netrc diretamente - o gitlab não substituirá o que está $CI_JOB_TOKENdentro do arquivo!
  4. Use https://gitlab.com/whatever/foobar.com- não ssh://git@foobar, não git+ssh://, nãogit+https:// . Você também não precisa de nenhum material CI-TOKEN no URL.
  5. Certifique-se de que você pode git clone [url from step 4]

Antecedentes: recebi

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

quando tentei fazer o Ansible + Gitlab + Docker funcionar como eu imagino. Agora funciona.



1

muitas respostas acima estão próximas, mas elas possuem ~ usernamesintaxe para deploytokens incorretos. Existem outros tipos de tokens, mas deploy tokené isso que o gitlab oferece (pelo menos 2020 ou mais) por repo para permitir acesso personalizado, incluindo somente leitura.

de um repository(ou group), encontre o settings-> repository-> deploy tokens. Crie um novo. Um campo usernamee tokensão criados. O usernameNÃO é um valor fixo por padrão; é exclusivo para esse token.

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

testado na conta pública gratuita do gitlab.com.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.