Estou tentando me autenticar no GitHub usando um token de acesso pessoal. Nos arquivos de ajuda do github, ele afirma usar o método cURL para autenticar ( https://help.github.com/articles/creating-an-access-token-for-command-line-use ). Eu tentei isso, mas ainda não consigo enviar para o GitHub. Observe, estou tentando enviar de um servidor não autenticado (Travis-CI).
cd $HOME
git config --global user.email "[email protected]"
git config --global user.name "username"
curl -u "username:<MYTOKEN>" https://github.com/username/ol3-1.git
git clone --branch=gh-pages https://github.com/username/ol3-1.git gh-pages
cd gh-pages
mkdir buildtest
cd buildtest
touch asdf.asdf
git add -f .
git commit -m "Travis build $TRAVIS_BUILD_NUMBER pushed to gh-pages"
git push -fq origin gh-pages
Este código causa os erros:
remoto: acesso anônimo a scuzzlebuzzle / ol3-1.git negado.
fatal: Falha na autenticação de ' https://github.com/scuzzlebuzzle/ol3-1.git/ ' "
fonte
git remote set-url origin https://scuzzlebuzzle:<MYTOKEN>@github.com/scuzzlebuzzle/ol3-1.git
Primeiro, você precisa criar um token de acesso pessoal (PAT). Isso é descrito aqui: https://help.github.com/articles/creating-an-access-token-for-command-line-use/
Risivelmente, o artigo explica como criá-lo, mas não dá absolutamente nenhuma pista do que fazer com ele. Após cerca de uma hora de documentação sobre pesca de arrasto e Stack Overflow, finalmente encontrei a resposta:
Na verdade fui forçado a habilitar a autenticação de dois fatores pela política da empresa enquanto estava trabalhando remotamente e ainda tinha alterações locais, então na verdade não era
clone
necessário, maspush
. Li em muitos lugares que precisava excluir e recriar o controle remoto, mas na verdade meupush
comando normal funcionou exatamente da mesma forma que oclone
anterior e o controle remoto não mudou:(@YMHuang me colocou no caminho certo com o link de documentação.)
fonte
Para evitar entregar "as chaves do castelo" ...
Observe que a resposta do sigmavirus24 requer que você dê ao Travis um token com permissões bastante amplas - já que o GitHub só oferece tokens com escopos amplos como "escrever todos os meus repositórios públicos" ou "gravar todos os meus repositórios privados".
Se você quiser restringir o acesso (com um pouco mais de trabalho!), Você pode usar as chaves de implantação do GitHub combinadas com os campos yaml criptografados do Travis.
Aqui está um esboço de como a técnica funciona ...
Primeiro, gere uma chave de implantação RSA (via
ssh-keygen
) chamadamy_key
e adicione-a como uma chave de implantação nas configurações de repo do github.Então...
Em seguida, use o
$password
arquivo para descriptografar sua chave de implantação no momento da integração, adicionando ao seu arquivo yaml:Nota: a última linha preenche previamente a chave RSA do github, o que evita a necessidade de aceitar manualmente no momento de uma conexão.
fonte
Automação / automação Git com tokens OAuth
Também funciona no
git push
comando.Referência: https://help.github.com/articles/git-automation-with-oauth-tokens/
fonte
Isso funcionou para mim usando ssh :
Configurações → Configurações do desenvolvedor → Gerar novo token .
fonte
git remote add origin https://[USERNAME]:[NEW TOKEN]@github.com/[USERNAME]/[REPO].git
git remote add origin https://[USERNAME]:[TOKEN]@git.mycompany.com/[ORGANIZATION]/[REPO].git
git remote set-url origin https://[TOKEN]@git.mycompany.com/[ORGANIZATION]/[REPO].git> /dev/null 2>&1
para evitar o registro de saída git insegura. Armazene o token em uma variável para evitar que ele seja registrado. Mas ele precisa ser armazenado em algum lugar. Para garantir ainda mais, você pode armazená-lo criptografado. Esta abordagem é, por exemplo, suportada pelo Travis CI.Normalmente eu gosto disso
O git_token está lendo a partir da configuração da variável no azure devops.
Você pode ler meu blog completo aqui
fonte
Tendo lutado com esse problema por quase um dia inteiro de codificação na seção ORG / REPO em nosso script de compilação obtendo o temido erro 'remoto não encontrado', eventualmente encontrei uma solução de trabalho para usar o
TRAVIS_REPO_SLUG
. Trocar isso para os atributos codificados funcionou imediatamente.fonte
Por ter lutado por tantas horas na aplicação do token GitHub, finalmente funciona como abaixo:
%d%H%M
na palavra de correspondência'-123456-whatever'
A seguir está o código completo:
Resultado...
fonte
A senha que você usa para fazer login no portal github.com não funciona no VS Code CLI / Shell. Você deve copiar o token PAT da URL https://github.com/settings/tokens gerando um novo token e colar essa string na CLI como senha.
fonte
Se você estiver usando o GitHub Enterprise e clonar o repo ou enviar um erro 403 em vez de solicitar um nome de usuário / token, você pode usar isto:
fonte