Autenticando no Git com SSH

git-com-ssh_abertura

Por padrão os repositórios web do Git usam o protocolo HTTPS tanto para a transferência de arquivos — nos comandos clone, pull, push etc — como para a autenticação dos usuários — quando do push e do clone e pull nos repositórios privados.

A “chatice” deste método é precisar (lembrar e) ficar digitando a senha para estas operações. Mas tanto BitBucket, GitHub quanto GitLab disponibilizam também a autenticação de usuário no repositório por SSH e é algo tão simples de configurar que vale a pena fazê-lo…

…nem que seja para fugir de uma vez da digitação da senha. 🙂

Chave SSH

Quem já faz acesso por SSH sem senha em algum host já possui as chaves* devidamente criadas:

$ file ${HOME}/.ssh/id_rsa.pub
/home/.../id_rsa.pub: OpenSSH RSA public key

Sendo o caso, ótimo, pode pular para a próxima etapa… Senão:

$ ssh-keygen -t rsa -C "«seu e-mail aqui»"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/.../.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
...

De posse das chaves você pode abrir o arquivo “~/.ssh/id_rsa.pub” — a parte da chave que é pública — em qualquer editor de textos e copiá-la para a área de transferência.

Se preferir pode fazer assim (nem todas as instalações instalam o “xclip” por padrão):

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

Para assim ter certeza de que todos os caracteres dela foram devidamente copiados.

(*) Sim, são “elas” pois é um par; em criptografia assíncrona há sempre a chave pública (que encripta e você distribui) e uma privada (que desencripta e que você guarda).

Repositório remoto

Os passos necessários para configurar a chave no BitBucket, GitHub e GitLab — três serviços onde tenho conta e, claro, repositórios de projetos — são os seguintes:

BitBucket

git-com-ssh_bitbucket.png

Vá até a miniatura do seu avatar no canto superior direito e clique nele e aparecerá um menu. Escolha a opção BitBucket Settings, você irá para account settings e lá, dentro do grupo de opções Secutiry, selecione SSH keys. Clique no botão “Add key”, descreva a chave em Label, cole a chave SSH copiada em Key e confirme em “Add key”. Um e-mail será enviado notificando a inclusão da senha.

Mais informações em https://confluence.atlassian.com/x/YwV9E

GitHub

git-com-ssh_github

Também na miniatura do seu avatar, clique para aparecer o menu e selecione a opção Settings. Em Your Profile, no painel Personal Settings, clique em SSH and GPG Keys e vá em “New SSH key”. Adicione uma descrição para a chave em Title, cole a chave em Key e finalize clicando no botão “Add SSH key”. Ele pedirá a digitação da senha (pois é) e te enviará um e-mail notificando a inclusão.

Mais informações em https://help.github.com/articles/generating-an-ssh-key/

GitLab

git-com-ssh_gitlab

Justamente! Clique na miniatura do avatar no canto superior direito e no menu que aparecerá selecione Profile Settings. Na linha com as opções disponíveis vá na antepenúltima, a SSH Keys. Lá cole a chave em Key, insira uma descrição em Title e confirme com “Add key”. Você também receberá um e-mail te informando sobre a inclusão da chave.

Mais informações em https://gitlab.com/help/ssh/README

Repositório local

Infelizmente a mudança não é “automágica” e é necessário reconfigurar o repositório Git para também autenticar via SSH. Existem duas maneiras de fazê-lo, um é pela “força bruta” editando diretamente o parâmetro url  dentro do arquivo “./.git/config” do repositório e a outra é utilizando os próprios comandos do Git para tal.

Obtendo a URL

Independente do método escolhido é necessário saber qual é nova URL do repositório. Por exemplo, para reconfigurar o repositório onde armazeno os arquivos deste blog para usar SSH, na página do repositório no GitHub, clique no botão “Clone or Download”, selecione “Use SSH” e copie-a para a área de transferência.

Configurando um novo repositório

Abra um terminal e digite:

$ git remote -v
origin https://github.com/plainspooky/giovannireisnunes.git (fetch)
origin https://github.com/plainspooky/giovannireisnunes.git (push)

Esta é a configuração atual do repositório, remova-a com:

$ git remote remove origin

E recrie-a usando a URL do repositório para SSH:

$ git remote add origin git@github.com:plainspooky/giovannireisnune
s.git

E pronto, o repositório reconfigurado!

Finalizando…

Agora basta fazer  pull (ou push) para utilizar a nova configuração do repositório — sim, é “normal” o aviso sobre a autenticidade na primeira conexão:

$ git push origin master
The authenticity of host 'github.com (192.30.253.113)' can't be
established.
...
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 1.06 KiB | 0 bytes/s, done.
Total 5 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To git@github.com:plainspooky/giovannireisnunes.git
   b8763ff..c1a85a0  master -> master

E agora ele atualiza o repositório sem pedir a tal da senha! 🙂

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s