Git e GitHub são ferramentas essenciais para todo desenvolvedor. Eles são amplamente utilizados em quase todos os tipos de projetos de desenvolvimento de software.

Desde 13 de agosto de 2021, o Github não aceita mais autenticação de senha para acesso à linha de comando. Isto significa que agora você precisa autenticar através de um token de acesso pessoal ou usar uma chave SSH (um pouco mais conveniente).

Aqui está o que acontece quando você tenta autenticar com sua senha do GitHub sobre HTTP em um terminal:

Username for 'https://github.com': yourusername

Password for 'https://yourusername@github.com':

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: Authentication failed for 'https://github.com/yourusername/repository.git/'

Basicamente, nas linhas acima, o GitHub está lhe informando que precisa da sua chave pública para autorizar você a editar qualquer um dos seus repositórios via SSH.

Então, vamos ver como você pode gerar chaves SSH localmente. No meu caso, eu estou usando um Ubuntu em WSL e como IDE de desenvolvimento, utilizo neste caso, o PphStorm, então tudo que eu fiz, foi executado dentro do próprio terminal do PhpStotm, rodando em um projeto no Ubuntu via WSL.

Para gerar o seu par de chaves (sim, é um par, uma pública e outra privada) execute o seguinte comando para gerar um par de chaves SSH local:

ssh-keygen -t ed25519 -C "seuemail@provedor.com"

É importante entender cada comando que introduzimos em nossos terminais, então vamos ver o que cada parte deste significa.

  • ssh-keygen: A ferramenta de linha de comando usada para criar um novo par de chaves SSH. Você pode ver seus todos as suas flags com ssh-keygen help
  • t ed25519: A flag -t é usada para indicar o algoritmo usado para criar a assinatura digital do par de chaves. Se o seu sistema suporta isso, ed25519 é o melhor algoritmo que você pode usar para criar pares de chaves SSH.
  • -C “email”: A flag -c é usada para fornecer um comentário personalizado no final da chave pública, que normalmente é o e-mail ou a identificação do criador do par de chaves.

Depois de digitar o comando em seu terminal, você terá que digitar o arquivo para o qual você gostaria de salvar as chaves. Por padrão, ele está localizado em seu diretório pessoal (no caso do Linux em /home/user), em uma pasta oculta chamada “.ssh”, mas você pode mudá-lo para o que quiser.

Será solicitado acrescentar uma senha para o seu par de chaves. Isto adiciona uma camada extra de segurança se, a qualquer momento, o seu dispositivo for comprometido. Não é obrigatório adicionar uma senha, mas sempre é recomendado.

Abaixo a imagem com o comando sendo executado e o seu retorno:

Como você pode ver, este comando gera dois arquivos no diretório que você selecionou (geralmente ~/.ssh): a chave pública com a extensão .pub, e a privada sem extensão. Neste caso o nome do par de chaves é teste_blog.
Adicione a chave SSH ao ssh-agent

O programa ssh-agent é executado em segundo plano, segura suas chaves e senhas privadas com segurança e as mantém prontas para uso pelo ssh. É um grande utilitário que salva você de digitar sua senha toda vez que você quiser se conectar a um servidor.

Por causa disso, você vai adicionar sua nova chave privada a este agente através dos comandos:

1- Certifique-se de que o ssh-agent está rodando em segundo plano:

eval `ssh-agent`
# Agent pid 334065

Se você receber uma mensagem semelhante a esta, então tudo está bem. Isso significa que o ssh-agent está rodando sob uma identificação de processo particular (PID). NO meu caso, o comando apresentou um problema, talvez devido a eu estar utilizando o WSL, então eu tive que rodá-lo através do seguinte comando:

eval $(ssh-agent)

2- Após o retorno do PID do ssh-agent, adicione sua chave privada SSH (aquela sem a extensão .pub) ao ssh-agent (lembre-se que eu estou em /home/user).

ssh-add teste_blog
Adicionar chave SSH à conta GitHub

O passo final é adicionar sua chave pública à sua conta GitHub. Basta seguir estas instruções:

1- Copie sua chave SSH pública para a sua área de transferência. Você pode abrir o arquivo onde ele está localizado com um editor de texto e copiá-lo, ou usar o terminal para mostrar seu conteúdo (lembre-se que eu estou em /home/user).

cat teste_blog.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFjheOytEPtI2Hv0eoyoIUcaAgdGfD+hF2E0kX20OT9u seuemail@provedor.com

2- Entre no GitHub e vá para a seção superior direita da página, clique na foto do seu perfil e selecione Configurações.

3- Então, nas configurações de ser perfil, clique em SSH and GPG Keys.

4- Clique no botão New SSH key.

5- Dê um título à sua nova chave SSH no GitHub – geralmente damos o nome do dispositivo ao qual você usará essa chave. E então cole a chave na área Key.

6- Adicione sua chave SSH clicando em Add SSH key.

Pronto! Agora você já poderá fazer o push no seu repositório. Lembrando que ao invés de você pegar/configurar o link HTTP na sua IDE, você usará o link SSH:

git@github.com:user/repositorio.git
Teste de conexão SSH ao GitHub

É hora de testar tudo o que você já fez até agora. Primeiro, precisaremos clonar o repositório em nossa máquina local. Podemos ir para a página de repositórios do GitHub e copiar o endereço SSH que ele fornece.

Então, clone o repositório usando um terminal:

git clone git@github.com:EMWieczorek/publico.git

Agora, vamos criar um arquivo de teste.txt e depois de fazer isto, fazer um commit com o arquivo:

git commit -am "Adicionando um arquivo de texto"

Após o commit, faça o push para dentro do GitHub como você normalmente faria.

git push -u origin main

Se tudo correu bem, parabéns! Você acabou de estabelecer uma conexão SSH entre a sua máquina e o GitHub. Caso o git retorne algum erro, verifique suas configurações, se estão de acordo com o que mostramos acima.

Por hoje é isso. Qualquer dúvida que você venha a ter, deixa um comentário que eu te ajudo a resolver.


Emilio Mario Wieczorek

I talk about everything, I discuss everything, but I only support 🇧🇼Grêmio. 💻IT Manager, 🎮Gamer and 👽Jedi (or Sith, depending on the day).

0 comentário

Deixe um comentário

Avatar placeholder

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *