image

Accede a bootcamps ilimitados y a más de 650 cursos para siempre

70
%OFF
Article image
Samuel Mendes
Samuel Mendes05/08/2025 13:37
Compartir
Suzano - Python Developer #2Recomendado para tiSuzano - Python Developer #2

Como assinar commits no terminal zsh Ubuntu no Windows com WSL

  • #Linux
  • #GitHub
  • #Git

O GitHub exibe commits com um selo de Verified quando são assinados. Esse selo especial simboliza maior segurança, autenticidade e integridade do código.

Para assinar um commit, é necessário usar uma chave GPG devidamente configurada. Esse processo é geralmente simples e pode ser feito em poucos passos. No entanto, enfrentei dificuldades para configurar a assinatura de commits recentemente, após instalar o WSL com Ubuntu no Windows 11 e o zsh. Como não encontrei uma solução na internet, decidi escrever este guia para ajudar outras pessoas.

1 - Instalação do Git

sudo apt update && sudo apt install git

2 - Configurando a chave GPG

2.0 - Gerar uma chave GPG, caso não tenha

gpg --full-generate-key

Configure como "RSA and RSA" com 4096 bits. Define o tempo em dias para expirar a chave, seu nome, seu email e a senha. A senha é opcional. Seu nome e email na chave podem ser visualizados analisando o commit do repositório clonado.

2.1 - Exportar a chave GPG

Obtenha o KeyId da sua chave GPG

gpg --list-secret-keys --keyid-format=long

image O código em destaque ( CF8AF868E7EB8BD0 ) é a KeyID da chave que utilizei.

Configure o git para usar sua chave GPG para assinatura

git config --global user.signingkey CF8AF868E7EB8BD0

Exporte a chave pública GPG usando a KeyID

 gpg --armor --export CF8AF868E7EB8BD0 > chave-gpg-publica.txt
  • ** Eu utilizei o comando para exportar a chave pública para um arquivo chave-chave-gpg-publica.txt, mas também é possível usar o comando para imprimir a chave pública diretamente no terminal:
gpg --armor --export KeyID

Selecione todo o conteúdo do arquivo chave-gpg-publica.txt e copie.

Acesse a página do GitHub para inserir uma nova Chave GPG https://github.com/settings/gpg/new

Defina um nome para sua chave, cole o conteúdo copiado e salve sua chave GPG.

image

3 - Configurando o terminal zsh para commits assinados com a chave GPG

3.0 - Instalando o zsh

sudo apt update && sudo apt install zsh && chsh -s $(which zsh)

3.1 Configurando o programa para informar senha no terminal ( pinentry)

Abra o terminal zsh e execute os comandos abaixo:

sudo apt-get update && sudo apt-get install gnupg pinentry-tty && nano ~/.gnupg/gpg-agent.conf
  • ** A linha de comados vai instalar o pientry-tty e abrir o arquivo gpg-agent.conf para editar com o nano

Adicione a linha abaixo no arquivo:

pinentry-program /usr/bin/pinentry-tty

Grave as alterações com o atalho Ctrl + O e confirme com a tecla Enter. Use Ctrl + X para sair.

Finalize processo do agente pgp

gpgconf --kill gpg-agent

Iniciar o agente gpg

gpg-agent --daemon

3.2 - Configurar o terminal

Para configurar o terminal será usado `nano` para editar o arquivo de terminal zshrc para o zsh e bashrc para o bash.

Zsh

Use o comando abaixo para abri o arquivo do terminal Zsh e cole a linha copiada no final do arquivo

nano ~/.zshrc

Copia a linha abaixo para colar no fim do arquivo do terminal

export GPG_TTY=$(tty)

Grave as alterações com o atalho Ctrl + O e confirme com a tecla Enter. Ctrl + X para sair.

source ~/.zshrc

Bash

Use o comando abaixo para abrir o arquivo do terminal Bash e cole a linha copiada no final do arquivo

nano ~/.bashrc

Copia a linha abaixo para colar no fim do arquivo do terminal

export GPG_TTY=$(tty)

Grave as alterações com o atalho Ctrl + O e confirme com a tecla Enter. Ctrl + X para sair.

source ~/.bashrc 

4 - Testando a assinatura de commits

Depois de configurar a assinatura de commits com chave gpg, basta fazer um commit incluindo -S

commit -S -m "meu commit"

Exemplo:

echo "# Texto" > TEXTO.md && git add TEXTO.md && commit -S -m "adição do arquivo TEXTO.md"
  • **O pientry-tty deve ser executado e solicitar que seja digitada a senha da chave GPG no terminal zsh.

Enviando commit assinado

git push origin main

Referências:

https://docs.github.com/en/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account

https://gist.github.com/samuelmendespy/53980f42be30832f2098d41966395398

Compartir
Recomendado para ti
Microsoft 50 Anos - GitHub Copilot
Microsoft AI for Tech - GitHub Copilot
Linux Experience
Comentarios (1)
DIO Community
DIO Community - 05/08/2025 14:25

Excelente, Samuel! Que guia prático e super detalhado sobre "Como assinar commits no terminal zsh Ubuntu no Windows com WSL"! É fascinante ver como você aborda um problema específico, mas comum, na configuração de ambientes Git, e oferece uma solução passo a passo que garante a segurança, autenticidade e integridade do código.

Você demonstrou que, para assinar um commit e obter o selo Verified no GitHub, é necessário gerar e configurar uma chave GPG. Sua análise do processo de instalação do Git, exportação da chave pública, configuração do terminal zsh com pinentry-tty e o comando git commit -S -m, é um guia fundamental para qualquer desenvolvedor que busca um fluxo de trabalho mais seguro e profissional.

Considerando que "o GitHub exibe commits com um selo de Verified quando são assinados" e que isso simboliza maior segurança, autenticidade e integridade, qual você diria que é o maior benefício para um desenvolvedor ao assinar seus commits com uma chave GPG em projetos open source ou em equipes, em termos de confiança e de segurança, em vez de apenas fazer commits sem assinatura?

Recomendado para tiSuzano - Python Developer #2