Adicionando uma chave SSH ao GitHub
Tags: github, git, security, braziliandevs
Published: 2023-09-11 20:18:40

## 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:

```bash
$ ssh-keygen -t ed25519 -C "email_github_de_preferencia"
```
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.

```bash
Enter file in which to save the key (/home/usuario/.ssh/id_ed25519): /home/usuario/.ssh/nome_arquivo
```
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.

```bash
Enter passphrase (empty for no passphrase):
```
Aqui temos todo o processo:

```bash
$ 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]-----+
```
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.**

```bash
eval `ssh-agent`
# Agent pid 10199
```
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.**

```bash
$ ssh-add ~/.ssh/nome_da_chave
```
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.

```bash
./ssh$  cat nome_da_chave.pub
```

No seu github faça o seguinte caminho:

```
Settings -> SSH and GPG keys -> New SSH key
```
 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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ajkgzfw1c0qbuc5vxmb.png)

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