DEV Community

Junio Santos for Forja

Posted on

Como criar e registrar uma chave SSH para o GitHub

Autor: Junio Santos

Índice

O que é

OpenSSH é uma ferramenta que auxilia em conexões remotas utilizando o protocolo SSH, servindo como um meio de autenticação prático onde não é necessário senhas e usernames. Aplique esse conceito ao Github (ou GitLab) e voce poderá clonar seus projetos e eles automaticamente autenticar com a sua conta, podendo manter o repositório sincronizado com maior segurança e sem necessidade de senha.

Se voce utiliza o Github Desktop não é necessário configurar alguma chave SSH, mas é bom ter configurado caso em algum momento precise utilizar Git fora da GUI

Pré-requisitos:

  • openSSH
  • Git

Instalando OpenSSH no seu computador

Caso ja openssh instalado em seu pc, pode pular para Criando a Chave
SSH

MacOS

MacOS:

MacOS já vem com o git instalando por padrão, e openssh já vem embutido sem a necessidade de fazer qlqer download extra.

Caso queira confirmar que realmente está tudo certo basta executar:

brew install git

Linux
Para conferir se já está disponível no seu computador utilize o comando:
if command -v /usr/bin/ssh-agent &> /dev/null; then echo "ta tudo certo"; fi

Se de fato apareceu ta tudo certo no teu terminal significa que ta tudo certo e pode pular essa parte.

# -- ubuntu/mint/debian
sudo apt install openssh-client

# -- fedora
sudo dnf install openssh

# -- openSUSE
sudo zypper install openssh

# -- arch
sudo pacman -S openssh

Windows
Uma das mais maneiras mais fáceis para conseguir gerenciar sua chave SSH no Windows é utilizando o Git Bash

Caso não tenha instalado basta baixar direto do site do Git acessando: https://git-scm.com/download/win

  • Clique no primeiro link para baixar
    image

  • Durante a instalação selecione a opção padrão Use bundled OpenSSH

Criando a chave SSH

Daqui em diante o processo será o mesmo tanto para Linux quanto para Windows

OBS: Usuários de Windows devem prosseguir utilizando Git Bash

Para gerar uma nova chave usaremos o ssh-keygen e passaremos alguns parametros para reforçar a segurança como:

Parâmetro Descrição
-f Indica onde a chave será armazenada e qual nome ela terá. Gera dois arquivos, um privado e um público (com extensão .pub).
-t Escolhe o algoritmo de criptografia a ser usado. O mais seguro atualmente é ed25519. Mais informações sobre outros algoritmos e comparações podem ser encontradas aqui.
-b Define o tamanho em bits da chave. Quanto maior, mais seguro. Por precaução, utilizaremos o maior disponível.
-E Especifica o tipo de hash no qual a chave será armazenada. O mais seguro disponível é sha512, e é isso que usaremos.
-C Define o comentário que será o identificador da chave. Neste caso, será o mesmo e-mail usado no GitHub, desde que não seja o e-mail privado. Se o seu e-mail principal for privado, o GitHub gera um e-mail para você. Basta clicar aqui e copiar o e-mail que fica abaixo da opção "Keep my email addresses private" (deve ser algo como: 541234+@users.noreply.github.com).

Com isso esclarecido, basta inserir todo o comando abaixo para prosseguirmos.

ssh-keygen \
    -b 4096    \
    -E sha512  \
    -t ed25519 \
    -f ~/.ssh/gitKey \
    -C "seu@email.com"
Enter fullscreen mode Exit fullscreen mode

lembre-se, o email não pode ficar entre < e >, deve ser identico ao utilizado no GitHub

Ao entrar com o comando irá aparecer uma tela pedindo uma senha. Como essa chave será utilizada apenas para validar o acesso ao github não é necessário, então aperte Enter para prosseguir.

Se formos ver a pasta ssh usando ls ~/.ssh/ irá notar que foram gerados dois arquivos: gitKey e gitKey.pub

A gitKey é a que contem os dados sensíveis e nunca deve ser compartilhada em hipotese alguma, pois é somente com ela permanecendo desconhecida que a gitKey.pub terá alguma validade e deverá gerar outra.
Por outro lado, a gitKey.pub pode ser mostrada sem problema algum e será ela que iremos mandar para o GitHub para autenticar com o nosso computador.

Para ler o arquivo gitKey.pub basta executar:

cat ~/.ssh/gitKey.pub
Enter fullscreen mode Exit fullscreen mode

esse arquivo terá que começar com: ssh-ed25519 e terminar com o email utilizado no Git.

img

e apenas copie essa linha pois será necessária para a próxima etapa.

Adicionando no GitHub

Após copiar nossa chave pública do SSH, abra a página de chaves no site do Github (ou clicando aqui) e aperte o botão New SSH Key

img

E basta dar um nome que seja fácil para voce identificar de qual computador está configurado, em Key type usar Authentication key e por fim inserir a chave pública inteira no campo Key

img

Registrando no dispositivo

Quanto ao GitHub já está tudo certinho, *PORÉMMM... ainda temos que registrar a nossa chave no nosso próprio computador

Ué, mas nós criamos a chave e até registrei no Github, não é só usar?

Por padrão as chaves geradas não são registradas pois não são em todos os casos que SSH é utilizado apenas localmente, por ser um arquivo ela pode ser exportada para outro sistema e só lá ser adicionada, por conta disso é de nossa responsabilidade fazermos esse registro
Um meio de verificar se a chave SSH está funcionado é mandando uma requisição para o GitHub, vamos testar:

img

Vish... Permission Denied não é nada bom...
Para resolver isso temos que invocar o ssh-agent e ssh-add que vieram junto com a instalação do openssh que fizemos no começo do post.

Antes, vamos instanciar o ssh-agent utilizando o comando:

# bash/zsh:
eval "$(ssh-agent -s)"

# fish
eval $(ssh-agent -c)
Enter fullscreen mode Exit fullscreen mode

e voce provavelmente deve ver uma mensagem parecida com Agent pid 16916
Agora sim, só nos resta registramos nossa chave privada:

ssh-add ~/.ssh/githubKey
Enter fullscreen mode Exit fullscreen mode

e novamente uma mensagem de confirmação deve ser exibida:

Identity added: /home/ManoelGomes/.ssh/gitKey (<your git email>)

# ou a mensagem abaixo se for um usuário da maçã
Identity added: /Users/ManoelGomes/.ssh/gitKey (<your git email>)
Enter fullscreen mode Exit fullscreen mode

E chegamos ao momento final ~~
Vamos tentar conectar no server do GitHub para ver se nossa máquina está ou não autenticada:

img

Agora está funcionando!!
Caso continue dando o erro de acesso negado, repita as etapas de adicionar a chave que funcionará.


E a partir de agora toda vez que voce for clonar algum repositório, esqueça o modo HTTP e use apenas SSH e nunca mais terá que inserir seu login e senha quando for trabalhar em algum outro projeto

img

E é isso! também não se esqueça de configurar a chave GPG para assinar cada commit que você fez!
E qualquer dúvida é só mandar aqui nos comentarios ;)

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

Top comments (0)

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay