Nova exigência do Git de autenticação por token, o que é e o que devo fazer?
![Nova exigência do Git de autenticação por token, o que é e o que devo fazer?](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer.png)
Nova exigência do Git de autenticação por token, o que é e o que devo fazer?
Ultimamente, você se deparou com essa mensagem ao fazer alguns comandos no Git?
Logon failed, use ctrl+c to cancel basic credential prompt.
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
fatal: unable to access ‘<repositório Git>’: The request URL returned error: 403
![Screenshot do Git Bash com a mensagem citada anteriormente.](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/i-01.png)
Isso ocorreu, porque o GitHub anunciou uma nova exigência de autenticação baseada em token para o Git. A partir do dia 13 de Agosto de 2021, a senha da conta do GitHub passou a não ser aceita mais para autenticar operações no Git.
Essa mudança se deve por motivos de segurança, pois os tokens oferecem alguns benefícios, como ter a possibilidade de salvar as informações do usuário no token e não no servidor, bem como o fato de ser configurado para ter as permissões que você quiser e ter um período de expiração. Ou seja, ele para de funcionar após determinado tempo, como se fosse uma senha única e descartável.
Assim, caso outra pessoa tenha acesso ao seu token, ela estará restrita apenas às permissões que você configurou para o mesmo. Assim você não irá correr o risco de perder sua conta do GitHub, podendo descartar o token perdido e gerar outro novamente.
![Banner da Escola de DevOps: Matricula-se na escola de DevOps. Junte-se a uma comunidade de mais de 500 mil estudantes. Na Alura você tem acesso a todos os cursos em uma única assinatura; tem novos lançamentos a cada semana; desafios práticos. Clique e saiba mais!](assets/alura-matricula-maior-escola-tecnologia-brasil-mais-500-mil-estudantes/matricula-escola-devops-alura-saiba-mais-versao-mobile.png)
Mas então, o que é preciso fazer para continuar usando as operações Git?
O GitHub recomenda começar a utilizar um token de acesso pessoal, mas caso queira, pode optar por utilizar uma chave SSH.
Dessa forma, segue um passo a passo de como gerar seu token pessoal:
1) Faça o login na página do GitHub;
2) Na página principal, selecione seu usuário no canto superior direito e clique na opção Settings:
![Screenshot da tela principal do GitHub com destaque na opção Settings.](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/i-02.png)
3) Na página que irá abrir, clique na opção Developer settings, 18ª opção da lista à esquerda.
![Screenshot da tela Settings do GitHub com destaque na opção Developer Settings.](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/i-03.png)
4) Selecione a opção Personal access tokens, 3ª opção da lista à esquerda.
![Screenshot da tela Developer Settings do GitHub com destaque na opção Personal access tokens.](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/i-04.png)
5) Clique na opção Generate new token.
![Screenshot da tela Developer Settings do GitHub com destaque na opção Generate new token no canto superior direito.](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/i-05.png)
6) Confirme com sua senha do GitHub.
![Screenshot da tela Confirm access do GitHub.](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/i-06.png)
7) Dê um nome para seu token e defina seu tempo de expiração.
![Screenshot da tela New personal token do GitHub.](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/i-07.png)
8) Marque as permissões que você deseja conceder ao token. Detalhe, para usar seu token para acessar repositórios, selecione a opção repo.
![Screenshot da lista Select scopes da tela New personal token do GitHub, com a opção repo selecionada.](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/i-08.png)
9) Por fim, ao selecionar todas as opções escolhidas, clique em Generate token ao final da tela.
![Screenshot da tela New personal token do GitHub, com destaque na opção Generate token.](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/i-09.png)
Prontinho, irá aparecer um código para que você possa copiar e colar no Gerenciador de Credenciais da sua máquina. Esse processo irá depender do seu sistema operacional.
Como editar credenciais no Windows
Depois que você gerar o token, copie ele e acesse o Painel de Controle. Você pode encontrar digitando na barra de busca.
![Screenshot da tela de busca do Windows com resultado de busca "Painel de Controle"](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/i-10.png)
Em seguida, acesse Contas de Usuário:
![Screenshot da tela do Painel de Controle com destaque na opção Contas de Usuário](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/i-11.png)
Clique em Gerenciar Credenciais do Windows:
![Screenshot da tela Contas de Usuário com destaque na opção Gerenciar Credenciais do Windows da seção Gerenciador de Credenciais](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/i-12.png)
Procure na seção de Credenciais Genéricas o github.com, selecione-o e coloque para editar;
![Screenshot da tela do Gerenciador de Credenciais com destaque no 'git:https://github.com'](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/i-13.png)
Copie o token gerado na primeira etapa e cole na caixa de texto da Senha.
![Screenshot da tela de Editar Credencial Genérica com destaque na caixa de entrada de texto 'Senha'](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/i-14.png)
Caso você não encontre o github.com, você pode selecionar a opção Adicionar uma credencial genérica
![Tela Gerenciar suas credenciais com destaque na opção Adicionar uma credencial genérica.](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/i-15.png)
E preencher nos campos:
Endereço de rede ou na Internet: https://github.com/
Nome de usuário: seu nome de usuário do GitHub
Senha: seu token pessoal gerado anteriormente
![Tela Adicionar uma credencial genérica com o campo Endereço de rede ou na Internet preenchido como "https://github.com/"](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/i-16.png)
Prontinho, depois você pode realizar operações Git novamente sem requisições de login até a data de expiração do token gerado.
Como editar credencial Git no Linux
No Linux, este processo pode ser feito somente no terminal. Ao abrir um repositório Git nele e fazer comandos como git pull
, git push
ou git clone
, o Git irá fazer uma requisição de usuário e senha, caso você colocar a sua senha do GitHub, como era feito anteriormente, irá receber a mensagem citada no início:
![Terminal Linux com o comando git pull origin main, tendo como resposta a mensagem: remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information. fatal: unable to access ‘<repositório Git>’](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/i-17.png)
Dessa forma, basta você realizar o comando novamente e no lugar da senha, colar o seu token gerado:
![Terminal Linux com requisição de senha do Git, tendo como destaque a opção Paste](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/i-18.png)
Assim, o comando irá ser realizado com sucesso:
![Terminal com o comando git pull origin main realizado com sucesso](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/i-19.png)
Porém, apesar de estar funcionando, não é viável ter que colar o token toda vez que for fazer esses comandos, certo? Para isso, basta escrever o seguinte comando para que a última senha utilizada fique salva:
git config --global credential.helper cache
Assim, no próximo comando feito, o Git irá solicitar autenticação novamente, porém nos seguintes comandos, o Git não irá pedir seu usuário e senha novamente:
![Teste citado acima realizado, sendo o comando git config --global credential.helper cache para salvar o token, git push origin main com requisição de autenticação e, por fim, o comando git push origin main feito novamente sem requisição de autenticação.](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/i-20.png)
E por fim, caso você queira tirar o token das configurações, basta fazer:
git config --global --unset credential.helper
Assim, você terá os pedidos de requisições novamente:
![Terminal com o comando acima realizado com sucesso e, em seguida, o comando git push origin main como teste para demonstrar a requisição de autenticação.](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/i-21.png)
Como editar credenciais no MacOS
Para setar o token no Mac, é semelhante ao processo do Windows. Acesse Keychain access, para encontrar você pode clicar no ícone da lupa no canto direito da barra de menu:
![Tela da barra de pesquisa do Mac com a busca keychain access](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/i-22.png)
Fonte: Imagem retirada da Documentação do GitHub
Em seguida, procure por github.com, clique em internet password, edite e cole o token pessoal gerado.
Caso queira retirar ele, no terminal digite:
git credential-osxkeychain erase
Conclusão
Em suma, essa mudança de utilização de tokens para autenticação é bastante interessante, pois ele pode lhe oferecer um controle maior e mais segurança. Você pode fazer todo esse processo citado acima quantas vezes achar necessário, bem como configurar as permissões e o tempo de expiração de cada token gerado da maneira de achar melhor.
Em casos de falhas em segurança, por exemplo, a pessoa estará limitada às permissões dadas ao token e sua conta GitHub continua salva. Além disso, caso isso ocorra, apague seu token indo no GitHub, em seguida em Settings, Developer settings e Personal access tokens, mesmo passo a passo para gerar o token, porém clique em Delete:
![GitHub em Setting -> Developer settings -> Personal access tokens, com destaque na opção Delete no canto direito do token gerado.](assets/nova-exigencia-do-git-de-autenticacao-por-token-o-que-e-o-que-devo-fazer/i-23.png)
Assim, você estará seguro novamente.
Caso você tenha curiosidade e queira entender um pouquinho mais sobre o token e outros tipos de autenticação, temos esse artigo que você possa se interessar:
Tipos de Autenticação: Senha, Token, JWT, Dois Fatores e Mais
E para aprender mais sobre autenticação e segurança, confira: