Tutorial como criar chave SSH (SSH key) pro gitlab ou github no mac os, windows ou linux

Objetivo

Fazer conexões automáticas no gitlab ou github com git pull, git push, git clone usando o protocolo SSH sem a necessidade de informar senha. Também útil na utilização de webhook que atualiza o software no servidor, sempre que há um commit na branch master.

O que será necessário?

  1. Acesso ao terminal (linha de comando)
  2. Uma conta no GITLAB ou GitHub
  3. Um repositório já criado
  4. Uma conta de email já registrada no GitHub ou no seu perfil do GITLAB

Como criar chave SSH para autenticação automática no github ou gitlab?

Basicamente os passos são bem simples, tanto para windows, mac ou linux:

  1. Abra o terminal (linux e mac) ou o prompt de comando (windows)
  2. Para criar a chave SSH do tipo RSA, digite o comando: ssh-keygen -t rsa -b 4096 -C “meu-email@email.com.br
  3. Será feito 3 perguntas: local onde salvar o par de chaves SSH, inserir uma senha na chave (opcional), e confirmar a senha inserida
  4. Para verificar a chave SSH criada:
    1. No linux ou mac, utilize o comando: cat ~/.ssh/id_rsa.pub
    2. No windows, utilize o comando: type “%userprofile%\.ssh\id_rsa.pub”
  5. Copie o texto da chave ssh pública criada (id_rsa.pub) e instale/configure acesso (cole o texto da chave)  no campo de configuração de chave ssh do github ou gitlab
  6. Não passe sua chave ssh privada (id_rsa) para ninguém e mantenha a mesma sempre segura

Abaixo vamos explicar detalhadamente o passo a passo, com imagens e texto explicativos.

Passo 1: Abrir o aplicativo prompt de comando ou terminal com o usuário desejado

O primeiro passo é abrir o prompt de comando caso esteja utilizando o sistema operacional Windows ou o Terminal, caso esteja utilizando o sistema operacional Mac OS ou Linux.

Tenha certeza que está utilizando o usuário correto que deseja realizar a autenticação (para criação do par de chaves SSH). Lembre-se de evitar utilizar o usuário root (caso utilize o linux).

 

Passo 2: Criar uma nova chave ssh

Com o prompt ou terminal aberto, vamos utilizar o comando ssh-keygen para gerar um par de chaves com criptografia RSA de 4096 bits e inserir junto com a chave uma string de texto informando o e-mail vinculado a chave (utilizar o endreço de email que utiliza no seu perfil do github / gitlab / bitbucket é uma boa prática):

ssh-keygen -t rsa -b 4096 -C "meu-email@email.com.br"

Como criar chave SSH para utilizar no Git - Gitlab e Github - Exemplo no Windows
Como criar chave SSH para utilizar no Git - Gitlab e Github - Exemplo no Mac e Linux

Após executar o comando, três perguntas serão feitas:

  1. A primeira é em qual local gostaria de gravar a chave criada. Recomendado salvar na pasta padrão (deixe em branco e tecle ENTER).
  2. A segunda pergunta é relativa a criação de uma senha para acesso a chave.
  3. A terceira pergunta é confirmar a senha escolhida.

 

Em relação a primeira pergunta após a execução do ssh-keygen: Selecione o local onde deseja salvar a chave ssh. Se apertar enter (sem escrever nada), ela será salva na sua pasta home, podendo ser:

No Windows:

C:\Users\nomedoseuusuario\.ssh\id_rsa.pub ou "%userprofile%\.ssh\id_rsa.pub"

No Linux e MAC OS, o caminho fica:

~/.ssh/id_rsa.pub

Em relação a segunda pergunta: – Mas e aí, preciso cadastrar uma senha de acesso à chave ssh ou não? É interessante levar em conta alguns pontos:

  • Caso você tenha um rigor para guardar as suas chaves de forma segura, e não quer ter que digitar sua senha toda vez que realizar conexão ou commit, então é melhor não configurar.
  • Caso a segurança seja uma variável de extrema importância, principalmente se você trabalhar com acesso a servidores em produção, ou repositórios privados com informações sensíveis, por segurança, é recomendado que configure uma senha.

Exemplo de caso de uso:

  • Caso crie seu par de chaves sem uma senha vinculada, o processo de conexão ao seu servidor ou repositório fica bastante ágil, pois não há mais necessidade de digitar credenciais de login e senha. Sua utilização também é muito comum em processos automatizados, caso tenha um cron job configurado que necessite realizar uma conexão ssh.
  • Adicionar uma senha à sua chave pode garantir uma camada extra de segurança. O motivo é que caso um hacker consiga ter acesso ao seu par de chaves, ele não vai conseguir conectar diretamente em seu servidor ou repositório; ele ainda vai precisar da senha.

A terceira pergunta é relacionada a confirmação da senha escolhida.

Será gerado então uma impressão digital do seu computador/servidor (key fingerprint).

Criando chave ssh para utilizar no git - github e gitlab - Exemplo no Windows
Criando chave ssh para utilizar no git - github e gitlab - Exemplo no Mac e Linux

Passo 3: Copiar a chave SSH (SSH key) para seu GitHub / GITLAB

Para poder cadastrar sua chave SSH no GitlabGithub ou Bitbucket, você precisa acessar o arquivo id_rsa.pub (que é sua chave pública), copiar todo seu interior e inserir na página de chaves. Digite o comando para mostrar na tela sua chave gerada:

No Linux e MAC OS, o camando é:

cat  ~/.ssh/id_rsa.pub

No Windows:

type "%userprofile%\.ssh\id_rsa.pub"

O início da chave deve começar com ssh-rsa e terminar com o seu email escolhido.

Como copiar sua chave pública SSH id_rsa.pub para utilizar no git - github e gitlab - Exemplo no WindowsComo copiar sua chave pública SSH id_rsa.pub para utilizar no git - github e gitlab - Exemplo no Mac e Linux

Passo 4: Configurar Github e Gitlab

No passo anterior copiamos o conteúdo do arquivo id_rsa.pub. Para configuramos nosso acesso autenticado por chave SSH no Gitlab ou Github, precisamos “instalar”/configurar esta chave ssh pública na plataforma.

Caso tenha o desejo de utilizar uma chave no padrão ed25519 ou invés do RSA, basta gerar a mesma com os passos abaixo:

Algoritmo ed25519

Uma alternativa para criação de chave SSH é utilizar o algoritmo de encriptação ed25519 ao invés de RSA. Para criar o par de chaves com este algoritmo, utilize o comando:

ssh-keygen -t ed25519 -C "meu-email@email.com.br"

O caminho para a chave pública é o mesmo, mas agora ela possui o nome vinculado ao algoritmo:
No linux e Mac OS:

~/.ssh/id_ed25519.pub

No Windows:

C:\Users\nomedoseuusuario\.ssh\id_ed25519.pub ou "%userprofile%\.ssh\id_ed25519.pub"

Para ver o conteúdo da chave SSH pública, utilize o comando:

Caso esteja utilizando Linux ou Mac OS:

cat  ~/.ssh/id_ed25519.pub

Agora se está utilizando o Windows, use o comando:

type "%userprofile%\.ssh\id_ed25519.pub"

Caso tenha alguma dúvida ou sugestão, escreve aí nos comentários! Farei o possível para responder!

Passo a passo de como configurar chave SSH no Gitlab

Criar um novo repositório no gitlab

Neste exemplo, vamos primeiro mostrar como criar um novo projeto, ou novo repositório. Na tela inicial do Gitlab, (após realizar o login), clique na opção:

Create a project

Gitlab - como criar novo projeto repositório - passo 1 - clicar no botão create project

Em seguida, escolha o tipo do projeto que deseja criar. Neste exemplo vamos criar um repositório em branco, então vamos escolher:

Create a blank project

Gitlab - como criar novo projeto repositório - passo 2 - criar novo projeto em branco

Agora estamos na tela de configuração do novo repositório. Neste exemplo vamos escolher o nome “repo-gitlab”, em referência que é um repositório que vamos configurar no gitlab. O project slug é como o nome do seu projeto irá aparecer na url da página, ele é gerado automaticamente de acordo com o nome escolhido, mas é possível alterar. Não vamos configurar um deplay, então vamos marcar:

No deployment planned

Este respositório será privado, então somente o dono do repositório e quem ele conceder acesso poderá ver seu conteúdo. Já vamos configurar o repositório com um arquivo README automaticamente, pois desta forma já podemos realizar um clone em nosso computador e testar.

Após tudo pronto, clique no botão:

Create project

Gitlab - como criar novo projeto repositório - passo 3 - preencher dados do repositório

Neste exemplo, temos então o projeto/repositório criado como na imagem abaixo:

Gitlab - como criar novo projeto repositório - passo 4 - novo repositório criado

Adicionar chave SSH ao gitlab

Uma das partes mais importantes para configurar a integração do seu repositório em seu ambiente de desenvolvimento é configurar sua chave SSH pública, para que seja possível agilizar o processo de commit. As configurações de chave SSH ficam dentro do menu do seu perfil pessoal. Então primeiramente precisamos clicar no ícone da nossa foto, como na imagem abaixo:

Gitlab - como adicionar nova chave SSH - passo 1 - acessar menu

Vamos então acessar a opção:

Edit profile

Gitlab - como adicionar nova chave SSH - passo 2 - editar perfil

Agora estamos dentro do nosso perfil. Repare que agora as opções no menu lateral estão diferentes. Vamos então escolher a opção:

SSH Keys

Gitlab - como adicionar nova chave SSH - passo 3 - clicar botão do menu de chave ssh

Estamos agora na tela de configuração da chave SSH pública. Copie sua chave gerada (conteúdo de id_rsa.pub) em seu computador pessoal e cole no textfield, como mostra na imagem abaixo. Em seguida, clique em:

Add Key

Gitlab - como adicionar nova chave SSH - passo 4 - adicionar sua chave ssh

Tudo certo! Nova chave pública configurada com sucesso! Terá uma imagem de confirmação e um resumo dos dados da sua chave, como mostrado na imagem abaixo:

Gitlab - como adicionar nova chave SSH - passo 5 - chave adicionada

Passo a passo de como configurar chave SSH no Github

Como mostramos no exemplo acima, o processo para adicionar uma chave SSH no github é muito semelhante ao que foi feito no gitlab.
Se já tiver um repositório criado, também já é possível testar clonar ele em seu computador pessoal para realizar testes de commit.

Adicionar chave SSH ao gitlab

O processo para adicionar sua chave ssh pública no github é super simples. O primeiro passo é clicar na foto do seu perfil no canto superior direito. Ao clicar, irá aparecer as opções do menu.

Github - passo a passo para configurar chave ssh - acessar menu perfil

Nas opções que aparecem, precisamos selecionar a opção:

Settings (Configurações)

Github - passo a passo para configurar chave ssh - acessar menu configurações (settings)

Na página que abriu, agora no menu, selecionamos a opção:

SSH and GPG keys

Github - passo a passo para configurar chave ssh - acessar menu ssh and gpg keys

Agora é só procurar a sessão de “SSH Keys” e clicar no botão verde:

New SSH Key

Github - passo a passo para configurar chave ssh - clicar no botão adicionar new ssh key

Agora escolha um título para sua chave, que é basicamente um nome, para você lembrar qual a finalidade ou origem daquela chave. Escolhe para qual a finalidade daquela chave, neste exemplo ela será:

Authentication key (chave de autenticação)

Agora precisamos colocar o conteúdo da nossa chave ssh pública no text field “key”.
Para fianlizar o cadastro da chave, clique em:

Add SSH key (Adicionar chave SSH)

Github - passo a passo para configurar chave ssh - colar sua chave ssh pública

Tudo pronto, nova chave ssh pública cadastrada com sucesso no github. A imagem abaixo ilustra a chave de exemplo cadastrada:

Github - passo a passo para configurar chave ssh - nova chave ssh configurada com sucesso no github

Configurar Git computador pessoal / estação de trabalho

Para que possamos configurar nosso repositório em nosso computador pessoal ou estação de trabalho, é necessário primeiramente realizar uma configuração inicial no git. Caso não tenha o git instalado em seu computador, basta acessar o site oficial do projeto para realizar o download e instalação:

https://git-scm.com/downloads

Com o git intalado, basicamente precisamos configurar alguns dados pessoais, como endereço de email e nome de usuário.
Para configurar o endereço de email do usuário no git, utilize o comando pelo prompt ou terminal:

git config --global user.email "meu-email@email.com.br"

Para configurar o nome do usuário, utilize o comando:

git config --global user.name "Vinicius Paes"

Lembre-se de atualizar o email e o nome de usuário dos exemplos acima para seus dados pessoais.

Git - configuração usuário e email

Como clonar um repositório, adicionar modificações, iniciar o commit e realizar push com chave ssh

Primeiramente para clonar um respositório por SSH, precisamos da URL do mesmo. Na página do seu repositório é possível extrair essa informação. No nosso exemplo, criamos o repositório chamado “repo-gitlab”, e estamos utilizando o nome de usuário viniciuspaes. Então nossa URL e o comando para clonar fica como:

git clone git@gitlab.com:viniciuspaes/repo-gitlab.git

Após clonar o diretório, podemos verificar o mesmo, com o comando:

dir

Agora precisamos navegar para dentro do repositório, utilizamos o comando:

cd repo-gitlab

Para testar a funcionalidade de commit/push para a branch principal (main), vamos criar um arquivo “novo.txt”:

type nul > novo.txt

Vamos adicionar o mesmo na lista para commit:

git add .

Agora precisamos adicionar uma mensagem para nosso commit, utilizamos então o comando:

git commit -m "adicionar arquivo novo.txt"

Tudo pronto, podemos utilizar o comando push para atualizar a branch main com o novo arquivo criado:

git push origin main

GIT - comando git clone de um repositório
GIT - verificar o diretório clonado do repositório com o comando dir
GIT - entrar no diretório clonado com o comando CD
GIT - criar um novo arquivo vazio e adicionar o mesmo no respositório
GIT - git commit das modificações com a mensagem informativa e git push para adicionar as modificações na branch main

Se tudo correu bem, podemos ver na interface do gitlab que o novo arquivo foi adicionado, como ilustrado na imagem abaixo:

Gitlab - arquivo que foi feito commit apareceu na interface

E tudo pronto! Par de chaves SSH criadas, git configurado, gitlab configurado, exemplo de clone de repositório, alteração e commit/push realizados por linha de comando!

 

Gostou deste tutorial, faltou alguma informação ou ficou com alguma dúvida? Escreve aí nos comentários!