Adicionando uma chave SSH ao GitHub

Antonio Silva - Sep 11 '23 - - Dev Community

O que são chaves SSH?

Chaves SSH são credenciais usadas para o Protocolo SSH (Secure Shell) para permitir o acesso seguro a computadores remotos pela Internet. Geralmente, essa autenticação ocorre em um ambiente de linha de comando.
O SSH é usado para transferência remota de arquivos, gerenciamento de rede e acesso remoto ao sistema operacional.

Chaves públicas vs privadas

O protocolo SSH usa uma técnica de criptografia chamada criptografia assimétrica. Esse termo pode parecer complicado e estranho, mas nada poderia estar mais longe da verdade.

A criptografia assimétrica é um sistema que usa um par de chaves, sendo uma a pública e a outra privada. A chave pública pode ser compartilhada com qualquer pessoa.

Seu principal objetivo é criptografar dados, convertendo a mensagem em código secreto ou texto cifrado.

A chave privada é a que você deve guardar para si. É usado para descriptografar os dados criptografados com sua chave pública. Sem ele, é impossível decodificar suas informações criptografadas.

Esse método permite que você e o servidor mantenham um canal de comunicação seguro para transmitir as informações.

Gerando uma chave SSH

Abra o seu terminal e execute o seguinte comando:

$ ssh-keygen -t ed25519 -C "email_github_de_preferencia"
Enter fullscreen mode Exit fullscreen mode

Vamos entende o que cada parte do comando significa:

  • ssh-keygen: A ferramenta de linha de comando usada para criar um novo par de chaves SSH. Você pode ver suas bandeiras com ssh-keygen help

  • -t ed25519: O -t sinalizador é usado para indicar o algoritmo usado para criar a assinatura digital do par de chaves. Se o seu sistema suportar, ed25519 é o melhor algoritmo que você pode usar para criar pares de chaves SSH.

  • -C “email_github”: O -c O sinalizador é usado para fornecer um comentário personalizado no final da chave pública, que geralmente é o email ou a identificação do criador do par de chaves.

Depois de digitar o comando no seu terminal, você precisará inserir o arquivo no qual deseja salvar as chaves. Por padrão, ele está localizado no diretório inicial, em uma pasta oculta chamada “ .ssh ”, mas você pode alterá-lo para o que quiser.

Enter file in which to save the key (/home/usuario/.ssh/id_ed25519): /home/usuario/.ssh/nome_arquivo
Enter fullscreen mode Exit fullscreen mode

Em seguida, você será solicitado a adicionar uma senha ao seu par de chaves. Isso adiciona uma camada extra de segurança se, a qualquer momento, seu dispositivo estiver comprometido. Não é obrigatório adicionar uma senha, mas é sempre recomendado.

Enter passphrase (empty for no passphrase):
Enter fullscreen mode Exit fullscreen mode

Aqui temos todo o processo:

$ ssh-keygen -t ed25519 -C "a.silva@mailfence.com"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/zero/.ssh/id_ed25519): /home/zero/.ssh/github
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/zero/.ssh/github
Your public key has been saved in /home/zero/.ssh/github.pub
The key fingerprint is:
SHA256:dRBEcSeZCIS42Y4xtvIxSFKGNooFqwUm2ta39eho2z0 a.silva@mailfence.com
The key's randomart image is:
+--[ED25519 256]--+
|++   . oo+*+oo.  |
|=*+.. .   .ooo   |
|*+= .+. . . .    |
|=o. *..o + .     |
|.o o *. S .      |
|  o = .o         |
|   o oo .        |
|    .. o .E      |
|      . . ..     |
+----[SHA256]-----+
Enter fullscreen mode Exit fullscreen mode

Ao final o comando gera dois arquivos no diretório que você selecionou (geralmente ~/.ssh): a chave pública com o .pub extensão e a privada sem extensão.

Adicionar a chave SSH ao agente ssh

O ssh-agent é um programa é executado em segundo plano, mantendo suas chaves e frases particulares com segurança e as mantém prontas para uso.

Por esse motivo, você adicionará sua nova chave privada a esse agente. Assim:

Verifique se o ssh-agent está sendo executado em segundo plano.

eval `ssh-agent`
# Agent pid 10199
Enter fullscreen mode Exit fullscreen mode

Se você receber uma mensagem semelhante a esta, isso significa que o agente ssh está sendo executado sob um ID de processo específico (PID).

Adicione sua chave privada SSH (aquela sem extensão) ao agente ssh.

$ ssh-add ~/.ssh/nome_da_chave
Enter fullscreen mode Exit fullscreen mode

Caso você não tenha dado um novo nome a sua chave o possível nome é id_ed25519.

Adicionar chave SSH à conta GitHub

Siga a abaixo as instruções:

Copie sua chave pública SSH para sua área de transferência. Você pode abrir o arquivo em que está localizado com um editor de texto e copiá-lo ou usar o terminal para mostrar seu conteúdo.

./ssh$  cat nome_da_chave.pub
Enter fullscreen mode Exit fullscreen mode

No seu github faça o seguinte caminho:

Settings -> SSH and GPG keys -> New SSH key
Enter fullscreen mode Exit fullscreen mode

Dê um título a sua chave SSH geralmente, o dispositivo do qual você usará essa chave, depois cole a chave no campo key e termine clickando em Add SSH key.

Image description

Por fim é testar a conexão com algum repositório.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .