Adicionando uma chave SSH ao GitHub

1 de agosto de 2022
Ronaldo B.

Já ouviu falar sobre as chaves SSH? Elas podem nos ajudar bastante a otimizar alguns processos repetitivos quando estamos atualizando nossos repositórios remotos no GitHub. Iremos falar sobre elas neste artigo.

O que é SSH?

Ao baixar um repositório no GitHub, temos dois protocolos à nossa disposição: 1) HTTPS e 2) SSH. A primeira opção permite que trafeguemos dados de maneira segura para nosso GitHub. Quando usamos esse protocolo, precisamos informar nosso usuário e senha do GitHub sempre que desejarmos adicionar novos arquivos ao nosso repositório remoto. Isso é muito seguro e funciona bem. Contudo, com o passar do tempo, esse processo pode se tornar um “problema”, pois o processo repetitivo de informar nossas credenciais pode se tornar cansativo.

Mas, quando usamos a segunda opção, o SSH, não precisamos informar nosso usuário e senha em cada acesso. Basta configurar nossas credenciais uma vez e depois sempre poderemos acessar nosso GitHub sem informá-las, pois o SSH é usado especialmente para realizar a conexão com servidores remotos.

O que precisamos fazer é criar uma chave SSH em nosso computador local e adicioná-la ao GitHub. Essa chave é como uma credencial. Para entendermos melhor, pense nessa ilustração: quando vamos a algum evento, talvez haja alguma catraca ou sistema de verificação na entrada do evento. Nós só podemos entrar no evento se possuirmos uma credencial, geralmente um crachá com nossos dados. Podemos dizer que uma chave SSH é como esse “crachá”, que vai nos permitir acessar o GitHub remotamente. Neste artigo iremos entender como funciona a criação dessa credencial.

Vamos entender primeiro o problema que pode surgir se não tivermos uma chave SSH configurada. Iremos realizar o clone de um repositório no GitHub. Nós ensinamos a criar um repositório neste artigo: Criando primeiro repositório no GitHub

Ao acessar qualquer repositório, nós vemos a opção de realizar seu download. Vamos selecionar a opção SSH para o clone:

Opção de clone com o SSH no site do GitHub

Clicando nessa opção, veremos a URL de nosso repositório e um botão para copiá-la:

Opção de copiar a URL do repositório no GitHub

Apenas um detalhe interessante: já conseguimos perceber uma diferença entre um repositório em SSH para um em HTTPS: o repositório em SSH inicia seu endereço com “[email protected]”, enquanto o HTTPS inicia com “https://github.com”.

Vamos agora tentar executar o comando git clone no Terminal:

git clone [email protected]:anthony-hcode/first-repository.git

Ao executar esse comando, veremos a seguinte resposta:

Retorno do comando git clone em nosso Terminal

O nosso clone não funcionou. Vemos o retorno de uma mensagem de erro que nos informa que não possuímos as credenciais necessárias para acessar o repositório. Em outras palavras, tivemos a permissão negada.

Vamos iniciar agora a criação e configuração da chave SSH para resolver esse problema. Nós iremos dividir esse processo em dois passos: 1) criar a chave SSH em nosso computador e 2) adicionar essa chave ao Github.

Criando uma chave SSH

Neste artigo iremos executar vários comandos por meio do Terminal. Se estiver usando Windows, por favor use o Git Bash. Mas, se estiver usando Linux ou Mac, pode usar o Terminal desses Sistemas Operacionais. Então, vamos iniciar a criação!

Windows

O primeiro comando que iremos executar é o ssh-keygen, como vemos abaixo:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Perceba que informei o meu email neste comando. É importante que ele seja o email cadastrado no seu GitHub.

Precisaremos responder algumas perguntas. Primeiro, será perguntado o local onde queremos salvar o arquivo com nossa chave, como vemos abaixo:

Comando ssh-keygen no Terminal

Por padrão, esse arquivo ficará na pasta do usuário do Sistema, dentro da pasta .ssh, e o nome do arquivo será id_rsa.

Nós podemos alterar o nome desse arquivo se quisermos. Para isso, teremos que informar o caminho completo até a pasta .ssh e o nome do arquivo que desejamos.

A segunda pergunta será uma senha para a nossa chave.

Senha para a chave SSH no Terminal

Podemos adicionar a senha que quisermos. Temos inclusive a opção de não adicionar senha alguma para acessar essa chave (isso não é recomendado). Após informar a senha, basta pressionar Enter. Será solicitado que confirmemos a senha. Após isso, veremos o seguinte resultado:

Mensagem de sucesso em nosso Terminal

Nossa chave foi criada com sucesso! Iremos agora criar um agente SSH. Ele é um programa muito útil, que será o responsável por realizar a nossa autenticação com o servidor remoto, no nosso caso o GitHub. Para criá-lo, execute este comando:

eval $(ssh-agent -s)

Por fim, vamos executar o comando abaixo:

ssh-add ~/.ssh/id_rsa

Nós informamos o caminho até o arquivo id_rsa, que foi o nome que definimos para nossa chave. Se você mudou o nome deste arquivo, deverá informá-lo na execução deste comando.

Linux

O processo no Linux será bem parecido, com algumas poucas mudanças. Vamos começar com o comando ssh-keygen:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Após realizar a criação como informamos acima, vamos criar o agente SSH, com este comando:

eval "$(ssh-agent -s)"

Perceba que uma pequena diferença é que usamos aspas nesse comando, ao contrário do que vemos no Windows. Por fim, vamos adicionar a chave de nosso computador ao agente com este comando:

ssh-add ~/.ssh/id_rsa

Mac

Vamos agora realizar a criação no Mac, já estamos ficando craques nesse processo ;).

Primeiro vamos executar o comando ssh-keygen:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Vamos criar o nosso agente SSH:

eval "$(ssh-agent -s)"

E agora adicionar a chave ao agente:

ssh-add -K ~/.ssh/id_rsa

Perceba que no caso do Mac precisamos informar o parâmetro -K para o comando ssh-add.

Com isso nossa chave está corretamente criada e configurada em nosso computador local.

Adicionando chave SSH ao GitHub

Agora que já temos nossa chave criada, iremos adicioná-la ao github.com. Será necessário acessar a página de configurações de nosso GitHub. Para isso, clique no link superior direito do site do GitHub, onde aparece nossa foto de perfil, e depois selecione a opção “Settings”:

Opção de Configurações no site do GitHub

Na página seguinte, clique na opção “SSH and GPG keys”, no painel que estará à esquerda:

Opção das chaves SSH no GitHub

Na página seguinte veremos a lista das chaves SSH que já possuímos cadastradas, e também um botão com a opção de criar uma nova chave:

Opção de uma nova chave SSH no GitHub

Ao clicar nesse botão, veremos essa página:

Página de criação de uma nova chave SSH

Essa é a página onde podemos adicionar uma chave SSH ao GitHub. Essa chave necessita de um título, que nós podemos escolher, e o conteúdo da chave em si. Para conseguir esse conteúdo, iremos executar mais um comando em nosso Terminal, que envolve copiar o arquivo da chave SSH que criamos agora há pouco.

Se seu computador for Windows, execute o seguinte:

clip < ~/.ssh/id_rsa.pub

Se estiver usando um Mac, execute o comando abaixo:

pbcopy < ~/.ssh/id_rsa.pub

Mas, se seu computador for Linux, será necessário instalar o recurso do xclip para realizar o processo de cópia do arquivo. Execute este comando:

sudo apt-get install xclip

Após ter essa ferramenta instalada, execute este comando:

xclip -sel clip < ~/.ssh/id_rsa.pub

Agora que estamos com o conteúdo do arquivo copiado, vamos colá-lo no GitHub e clicar em “Add SSH key”:

Opção de criar nova chave SSH

Talvez seja requisitado que informemos nossa senha do GitHub. Após isso, nossa chave SSH estará corretamente adicionada. Agora, se tentarmos clonar o nosso repositório novamente, com o mesmo comando que informamos no início do artigo, veremos o seguinte resultado:

Mensagem de sucesso ao clonar um repositório

O processo de clonagem do repositório funcionou corretamente! E continuará funcionando ao executar os outros comandos git, como o git pull ou git push.

Se você gostou desse artigo, não esqueça de compartilhá-lo com outros. Isso nos ajuda a continuar trazendo conteúdo para nosso Blog. Até o próximo artigo :)

Hcode: Utilizamos cookies para a personalização de anúncios e experiências de navegação dentro de nosso site. Ao continuar navegando, você concorda com as nossas Política de Privacidade.