Blog Formação DEV

Como fazer autenticação no Github pelo terminal

Neste artigo veremos como podemos autorizar o acesso ao Github diretamente pelo terminal para sincronizarmos nossos repositórios locais e remotos pela linha de comando.
Como fazer autenticação no Github pelo terminal
Texto de: Letícia Garcez

Introdução

O GitHub é uma plataforma de hospedagem de código-fonte e colaboração, permitindo que desenvolvedores compartilhem, colaborem e controlem versões de projetos de software. Essa plataforma é extremamente popular no contexto de desenvolvimento de software devido à sua capacidade de facilitar o trabalho colaborativo, rastrear mudanças, gerenciar problemas e fornecer um repositório centralizado para projetos de código aberto e privados.

Podemos utilizar o GitHub como uma ferramenta para hospedar nossos repositórios versionados utilizando o Git a partir de diversas ferramentas como o GitHub Desktop, o Visual Studio Code e o terminal. Neste artigo, focaremos no terminal e como podemos fazer a autenticação do GitHub nele para podermos nos conectar nosso repositório local a um repositório remoto no GitHub.

É importante avisar aqui que estarei usando o sistema operacional Linux para fazer a autenticação. Todo o processo detalhado nesse artigo deve funcionar corretamente para o terminal do MacOS também, mas caso você esteja utilizando o Windows, recomendo que siga as instruções usando o Git Bash como terminal. Também devo dizer que nesse artigo veremos a autenticação via HTTPS e SSH, sem o uso do GitHub-CLI, para fazer o clone de um repositório privado, o que é uma forma bem rápida de testar a autenticação.

Autenticação com HTTPS

HTTPS é uma sigla para Hypertext Transfer Protocol Secure, que seria algo como Protocolo Seguro de Transferência de Hipertexto em português. Este protocolo é a versão criptografada do HTTP e permite a comunicação segura entre duas máquinas na rede.

A autenticação com o HTTPS se baseia em utilizar a URL do seu repositório, e como é mais simples que a autenticação com SSH, a abordaremos primeiro. Primeiro de tudo, precisamos do link que será utilizado no nosso comando clone. Este pode ser encontrado clicando em Code no seu repositório e selecionando a opção HTTPS.

Fonte: GitHub

Então, utilizando o seguinte comando na linha de comando:

git clone <https://github.com/usuario/nome-do-repositorio-privado.git> 

Já somos requeridos a autenticação da conta. Aqui são requisitados o nome de usuário e a senha, mas se você digitar a sua senha verá uma mensagem dizendo que em 2021 o GitHub deixou de aceitar a sua senha de usuário como uma maneira de autenticação válida e começou a requerer um token de acesso.

Este token é uma espécie de senha segura gerada pelo próprio GitHub com um prazo de validade, e pode ser utilizada para autenticar a sua conexão em praticamente qualquer máquina. Os tokens são exibidos apenas no momento de sua criação, e você deve anotá-los em algum lugar, pois ao fechar a página, não será mais possível visualizar este token. Mas não se preocupe porque você pode criar e excluir tokens quando quiser, de modo que se você perder o seu token de autenticação, basta excluí-lo e criar um novo.

Para criar o token, você deve ir nas configurações do seu perfil. Essas configurações podem ser acessadas clicando sobre sua foto no canto superior direito da tela e então selecionando a opção settings:

Fonte: Github

Clique em Developer settings, que está no menu esquerdo do seu perfil.

Fonte: Github

E então em Personal access tokens e Tokens(classic)

Fonte: Github

E agora em Generate new token e Generate new token (classic)

Fonte: Github

Feito isso, você vai precisar digitar a sua senha e configurar o token. Você precisará colocar um nome no token, uma data de expiração e pode configurar quais acessos você deseja que o token tenha. Como este será um token específico para acessar os repositórios, selecionei apenas a opção repo, mas dependendo da sua necessidade você pode conferir mais acessos ao seu token, ou criar vários tokens com acessos diferentes.

Fonte: Github

Após definir os acessos, você ir até o fim da página e clicar em Generate token, o que irá gerar seu token. Recomendo que você já o copie e salve em algum lugar.

Fonte: Github

Para deletar o token, basta clicar no botão Delete, e aquele token não poderá mais ser utilizado para fazer a autenticação da sua conta.

Agora podemos tentar novamente o comando:

git clone <https://github.com/usuario/nome-do-repositorio-privado.git>  

O seu nome de usuário deve ser colocado normalmente, e no lugar da senha, você deve utilizar algum dos tokens cadastrados na sua conta no GitHub.

Feito isso, o seu repositório estará clonado e toda vez que você desejar utilizar este método, basta utilizar o seu nome de usuário e um token válido para acessar a conta.

Autenticação com SSH

Agora vamos falar sobre a autenticação com SSH, que é uma forma mais segura de autenticar o GitHub no terminal. SSH é uma sigla para Secure Shell. Este é um protocolo de comunicação também criptografado que funciona com a utilização de chaves. Essas chaves são códigos que serão utilizados para criptografar e descriptografar dados da comunicação. Não entrarei em detalhes sobre como essa criptografia acontece, mas saiba que precisamos de um par de chaves, uma será utilizada criptografar dados que serão enviados para a nossa máquina e uma privada, que vai descriptografar as mensagens que recebermos criptografadas com a chave pública.

Para criar as chaves SSH, você precisa abrir o terminal caso esteja usando Linux ou Mac, ou o Git Bash caso esteja usando Windows e digitar o comando ssh-keygen -t ed25519 -C "SeuE-mail", colocando o seu e-mail entre aspas. Esse comando irá gerar o par de chaves SSH necessárias para a aplicação.

Após este comando, a ferramenta perguntará onde quer salvar a chave, e você pode apertar enter para selecionar a opção padrão e então você pode selecionar uma senha para associar à sua chave, ou apertar enter para não especificar nenhuma senha. Essa senha deverá ser digitada novamente, então se você selecionou a opção de não ter uma senha, basta apertar enter novamente na confirmação. Algo interessante aqui é que ao invés de pedir por uma password, que seria uma senha normal, a linha de comando pede por uma passphrase, que seria uma senha longa.

Agora o seu par de chaves SSH já foi gerado e se encontra em um diretório chamado .ssh na pasta home do seu usuário. Antes de salvarmos essas chaves no GitHub, precisamos adicioná-las ao gerenciador de chaves SSH da máquina. Para isso, acionamos esse gerenciador através do terminal ou do Git Bash com o comando eval "$(ssh-agent -s)" e então adicionamos a chave criada com o comando ssh-add ~/.ssh/id_ed25519

Agora, para podermos utilizar esse par de chaves para a autenticação precisamos adicionar a chave pública do nosso par de chaves SSH ao GitHub. Para isso, precisamos acessar a nossa chave pública, o que pode ser feito com o comando cat ~/.ssh/id_ed25519.pub, que irá imprimir a chave pública no terminal. Essa chave deve ser copiada por completo pelo usuário. No Windows pode-se usar o comando clip < ~/.ssh/id_ed25519.pub que já colocará a chave na área de transferência.

Agora que você já tem a chave na área de transferência, deve acessar as configurações do seu perfil e selecionar a opção SSH and GPG Keys

Fonte: Github

Clique em New SSH key

Fonte: Github

E então selecione um nome para a chave, cole o conteúdo da chave disponível no terminal e clique em Add SSH key.

Fonte: Github

Com isto, sua chave aparecerá no menu de chaves SSH do GitHub, e assim como os tokens, pode ser deletada a qualquer momento.

Fonte: Github

Agora, se tudo ocorreu corretamente, sua conexão com o GitHub já está configurada, e para testá-la, podemos utilizar o comando ssh -T git@github.com no terminal ou o Git Bash.

Caso você receba um aviso como o abaixo, digite sim, e caso seja requerida a senha da chave SSH, forneça-a. Essa é a senha que definimos no momento da criação da chave.

> Não é possível estabelecer a autenticidade do host 'github.com (IP ADDRESS)'.
> A impressão digital da chave RSA é SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
> Tem certeza de que deseja continuar com a conexão (sim/não)?

Por fim, a mensagem como a mostrada abaixo indica que a conexão foi bem sucedida, e agora você pode utilizar o SSH para fazer a conexão com o GitHub, o que não irá requerer a autenticação via token toda hora.

Agora, faremos o clone do repositório privado. Para isso, basta utilizar o comando git clone novamente, porém ao invés de colocar o endereço disponível em HTTPS, colocaremos o endereço disponível na opção SSH.

Fonte: Github

E de fato, o comando git clone git@github.com:usuario/nome-do-repositorio-privado.git fará o clone do seu repositório, sem requerer a autenticação por uma senha ou token, o que é muito prático.

Considerações finais

Essas são as formas de fazer a autenticação através do terminal. Acho importante falar também que independentemente da forma utilizada para a autenticação, os comandos do Git como add, commit e push continuarão os mesmos, o que mudará são os formatos dos links utilizados.

Sobre o autor
Cod3r

Cod3r

Com mais de 400 mil alunos, a Cod3r é uma das principais escolas de tecnologia do País. Um de seus produtos mais importantes é a Formação DEV, com objetivo de preparar os profissionais para o mercado.

Ótimo! Inscreveu-se com sucesso.

Bem-vindo de volta! Registou-se com sucesso.

Assinou com sucesso o Blog Formação DEV .

Sucesso! Verifique o seu e-mail para obter o link mágico para se inscrever.

As suas informações de pagamento foram atualizadas.

Seu pagamento não foi atualizado.