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"
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
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):
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]-----+
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
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
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
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.
Por fim é testar a conexão com algum repositório.