Como Gerar e Utilizar Chaves SSH no GitLab

Repetidos pedidos de nome de usuário e senha são irritantes e uma perda de tempo. Se você utiliza autenticação por senha em sua conta GitLab, cada ação requer o envio de suas credenciais, seja como parte do comando ou por meio de uma solicitação interativa.

Especialmente ao automatizar os pipelines CI/CD no GitLab, a autenticação por senha pode ser ineficiente e representar um possível risco de segurança. Por que não encerrar seu sofrimento e mudar para a autenticação por Secure Shell (SSH) usando chaves SSH no GitLab? Continue lendo e aprenda como fazer!

Ao final deste tutorial, você terá gerado um par de chaves SSH, utilizado a chave para autenticar e publicar um novo projeto no GitLab.

Pré-requisitos

Este tutorial é uma demonstração prática. Para acompanhar, certifique-se de preparar os seguintes requisitos.

  • Sua conta do GitLab. Se ainda não tiver uma, faça o cadastro gratuitamente primeiro.
  • A computer to use as your Gitlab SSH client. This tutorial will be using an Ubuntu 20.04 LTS computer but should work with Windows and macOS too.
  • Atualize ou instale o Git. A versão mais recente, até o momento desta redação, é 2.25.1.

Visual Studio Code (VS Code). O exemplo neste tutorial usará o VS Code 1.62.3.

Gerando um Par de Chaves SSH no GitLab

Chaves SSH ou um par de chaves consiste em chaves privadas e públicas. Em resumo, a chave privada é o que o cliente (seu computador) apresenta ao servidor (GitLab) para autenticação, e a chave pública é o que o servidor usa para decodificar sua chave privada. E se ambas as chaves coincidirem, a autenticação é bem-sucedida.

O GitLab suporta dois tipos de pares de chaves SSH, as chaves SSH RSA e ED25519. Mas neste exemplo, você gerará o par de chaves ED25519, pois é considerado mais seguro do que as chaves RSA. Siga as etapas abaixo para gerar um par de chaves SSH.

1. Em sua área de trabalho, abra uma sessão de terminal e execute o comando abaixo. Este comando abre seu diretório doméstico no VS Code.

code ~

2. No VS Code, clique em Terminal —> Novo Terminal.

Opening a new terminal instance in VSCode

3. No terminal do VS Code, execute o ssh-keygen -t abaixo para gerar o tipo de chave SSH ED25519. A tag de comentário -C é opcional, mas recomendada para tornar suas chaves mais identificáveis.

ssh-keygen -t ed25519 -C "Gitlab SSH Key"

4. Na próxima solicitação perguntando onde salvar a chave, pressione Enter para aceitar o nome do arquivo padrão. O nome do arquivo deve ser semelhante a /home/<username>/.ssh/id_ed25519, onde <username> é o seu nome de usuário.

Accepting the default filename

5. Em seguida, deixe a frase secreta vazia e pressione Enter duas vezes. Como resultado, você estará criando um par de chaves SSH sem senha.

Leaving the passphrase empty

Você deverá ver um resultado semelhante ao da captura de tela abaixo, mostrando as localizações da chave privada (id_ed25519) e da chave pública (id_ed25519.pub).

As chaves privada e pública têm o mesmo nome de arquivo base. Mas a chave pública tem a extensão .pub, enquanto a chave privada não tem extensão.

Generating the Gitlab SSH key pair

Adicionando a Chave SSH do Gitlab ao Seu Perfil

Lembre-se de que a chave privada permanece em seu computador, enquanto a chave pública deve estar no servidor Gitlab. Portanto, após gerar as Chaves SSH, seu próximo passo é fazer o upload da chave pública para sua conta do Gitlab. Para fazer isso, proceda da seguinte forma.

1. Abra seu arquivo de chave pública no VSCode. Na aba Explorer, expanda a pasta .ssh e clique em id_es25519.pub. Em seguida, selecione a chave pública e copie-a para a área de transferência.

Copying the public key

2. Agora, abra um navegador da web, acesse https://gitlab.com, e faça login em sua conta do Gitlab.

3. Após o login, vá para as configurações de perfil de Chaves SSH em https://gitlab.com/-/profile/keys.

  • Cole a chave pública que você copiou anteriormente no campo de Chave.
  • O campo Título é preenchido automaticamente com a parte de comentário da sua chave pública. Deixe o valor do título como está ou insira o valor de sua preferência.
  • Opcionalmente, especifique uma data de expiração no campo de Expira em.
  • Por fim, clique em Adicionar chave.
Adding the Gitlab SSH key to your profile

Usando Sua Chave SSH do Gitlab

Até agora, você gerou a chave SSH e a carregou em sua conta do Gitlab. O que resta é testar se sua chave SSH funciona, usando-a para conectar e autenticar no Gitlab.

Entrando

No terminal do VS Code, conecte-se à sua conta do Gitlab executando o comando abaixo.

ssh -T [email protected]

Supondo que você esteja se conectando pela primeira vez, o comando solicitará que você verifique a autenticidade do host e confirme a conexão. Digite sim no prompt e pressione Enter para confirmar.

Observe que você não precisou inserir um nome de usuário e senha para fazer login? Em vez disso, o comando ssh usa automaticamente suas chaves SSH para autenticação. Após um login bem-sucedido, você deverá ver uma mensagem de boas-vindas dizendo: “Bem-vindo ao Gitlab @username!“.

Logging in to Gitlab via SSH

Publicando um Novo Projeto

Você confirmou que sua chave SSH do Gitlab funciona e permite autenticar-se com sucesso. Mas será que também funciona quando você interage com o Gitlab por meio do Git? Por que não testar publicando um novo repositório do Gitlab?

1. Primeiro, inicialize a configuração do Git e configure-a com o nome de usuário e endereço de e-mail da sua conta do Gitlab. No terminal do VS Code, execute os comandos git config abaixo para especificar, respectivamente, seu nome de usuário e endereço de e-mail do Gitlab.

git config --global user.name "your_username"
git config --global user.email "[email protected]"

O comando que você executou deve atualizar ou criar o arquivo ~/.gitconfig com as informações fornecidas.

Initializing the Git configuration

2. Em seguida, crie uma pasta em seu diretório pessoal para o seu novo repositório. Nomeie a nova pasta como meu-primeiro-projeto.

O nome da pasta também será o nome do projeto do seu repositório Gitlab.

# Crie uma nova pasta
mkdir ~/my-first-project
# Altere o diretório de trabalho para a nova pasta
cd ~/my-first-project

3. Inicialize o repositório executando o comando abaixo. Certifique-se de substituir <nome-de-usuário> pelo seu nome de usuário do Gitlab.

git init

Você deverá ver uma mensagem de confirmação semelhante à captura de tela abaixo.

Initializing a new repository

4. Em seguida, especifique o endereço remoto do repositório Git para o seu projeto. Este endereço do repositório determina se você autenticará com chaves SSH ou com nome de usuário e senha.

Encontre a sintaxe abaixo, onde <nome-de-usuário> é o seu nome de usuário do Gitlab e <nome-do-projeto> é o nome do repositório do Gitlab. Observe que o endereço do repositório começa com [email protected], o que indica que você autenticará com a chave SSH em vez de um nome de usuário e senha.

git remote add origin git@gitlab.com:<username>/<project-name>.git

Suponha que o nome de usuário do Gitlab seja kevin, e o nome do repositório seja meu-primeiro-projeto. Agora execute o comando no terminal da seguinte forma.

git remote add origin git@gitlab.com:kevin/my-first-project.git

5. Execute o comando abaixo para criar um arquivo vazio no seu repositório chamado README.md.

touch README.md

6. Abra o arquivo README.md para edição e cole o seguinte conteúdo no arquivo. Salve o arquivo após a edição. Meu primeiro projeto para demonstrar chaves SSH do Gitlab.

My first project to demonstrate Gitlab SSH keys.
Creating a file and adding content

7. Agora, informe ao Git para adicionar o novo arquivo README.md ao repositório e confirmar as alterações.

git add README.md
git commit -m "My first commit"

Você deverá ver uma saída semelhante ao mostrado abaixo.

Adding a file and committing changes to the repository

8. Por fim, é hora de publicar seu novo repositório. Execute o comando abaixo para enviar o repositório do seu computador para sua conta do Gitlab.

git push --all origin

Como você pode ver abaixo, a criação do projeto foi bem-sucedida e não houve solicitações de credenciais! O Git utilizou suas chaves SSH para autenticar com o Gitlab.

Creating a repository in Gitlab

9. Por fim, confirme que seu novo projeto do Gitlab existe online. Usando seu navegador, acesse https://gitlab.com/dashboard/projects para visualizar uma lista de seus projetos existentes. Você deverá ver o nome meu-primeiro-projeto na lista.

Viewing the Projects list in Gitlab

10. Além disso, clique no nome do projeto e você deverá ver o arquivo README.md e seu conteúdo em exibição.

Viewing the README file

Conclusão

Parabéns por ter chegado até aqui neste tutorial! Ao longo deste tutorial passo a passo, você aprendeu como gerar e usar chaves SSH para realizar implantações seguras de controle de versão em seu repositório GitLab.

Com esse conhecimento, agora você pode realizar tarefas em seus repositórios do GitLab sem se preocupar em expor inadvertidamente seu nome de usuário e senha.

Você já utilizou autenticação por chave SSH no GitLab antes? Como foi a experiência? Você recomenda que outros também usem chaves SSH, ou há alguma razão pela qual deveriam evitá-las? Deixe-nos saber.

Source:
https://adamtheautomator.com/gitlab-ssh/