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:
Clicando nessa opção, veremos a URL de nosso repositório e um botão para copiá-la:
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 “git@github.com”, enquanto o HTTPS inicia com “https://github.com”.
Vamos agora tentar executar o comando git clone no Terminal:
git clone git@github.com:anthony-hcode/first-repository.git
Ao executar esse comando, veremos a seguinte resposta:
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 "anthony@hcode.com.br"
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:
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.
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:
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 "anthony@hcode.com.br"
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 "anthony@hcode.com.br"
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”:
Na página seguinte, clique na opção “SSH and GPG keys”, no painel que estará à esquerda:
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:
Ao clicar nesse botão, veremos essa página:
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”:
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:
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 :)