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?
- Acesso ao terminal (linha de comando)
- Uma conta no GITLAB ou GitHub
- Um repositório já criado
- 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:
- Abra o terminal (linux e mac) ou o prompt de comando (windows)
- Para criar a chave SSH do tipo RSA, digite o comando: ssh-keygen -t rsa -b 4096 -C “meu-email@email.com.br“
- Será feito 3 perguntas: local onde salvar o par de chaves SSH, inserir uma senha na chave (opcional), e confirmar a senha inserida
- Para verificar a chave SSH criada:
- No linux ou mac, utilize o comando: cat ~/.ssh/id_rsa.pub
- No windows, utilize o comando: type “%userprofile%\.ssh\id_rsa.pub”
- 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
- 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"
Após executar o comando, três perguntas serão feitas:
- A primeira é em qual local gostaria de gravar a chave criada. Recomendado salvar na pasta padrão (deixe em branco e tecle ENTER).
- A segunda pergunta é relativa a criação de uma senha para acesso a chave.
- 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).
Passo 3: Copiar a chave SSH (SSH key) para seu GitHub / GITLAB
Para poder cadastrar sua chave SSH no Gitlab / Github 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.
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
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
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
Neste exemplo, temos então o projeto/repositório criado como na imagem abaixo:
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:
Vamos então acessar a opção:
Edit profile
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
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
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:
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.
Nas opções que aparecem, precisamos selecionar a opção:
Settings (Configurações)
Na página que abriu, agora no menu, selecionamos a opção:
SSH and GPG keys
Agora é só procurar a sessão de “SSH Keys” e clicar no botão verde:
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)
Tudo pronto, nova chave ssh pública cadastrada com sucesso no github. A imagem abaixo ilustra a chave de exemplo cadastrada:
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.
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
Se tudo correu bem, podemos ver na interface do gitlab que o novo arquivo foi adicionado, como ilustrado na imagem abaixo:
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!