Entendendo SSH para Git: do básico ao avançado

Quem nunca se deparou com aquelas URLs esquisitas do GitHub ou GitLab que começam com git@... e ficou se perguntando o que exatamente está acontecendo por trás disso? Pois é, eu também já tive essa dúvida. A verdade é que, quando falamos de SSH dentro do Git, estamos falando de um dos recursos mais importantes para qualquer programador que quer trabalhar de forma segura e prática com repositórios remotos.

Neste artigo, vou te explicar o conceito de SSH aplicado ao Git, do básico até os pontos mais avançados. A ideia é que você entenda não só como configurar, mas também o porquê de cada passo, para que tudo faça sentido de ponta a ponta.

O que é SSH?

SSH significa Secure Shell. Ele é um protocolo que permite a comunicação segura entre duas máquinas. Em vez de ficar usando login e senha toda vez que você precisa se autenticar, o SSH utiliza criptografia baseada em chaves.

Funciona assim: você gera um par de chaves. Uma é a chave privada, que deve ficar apenas na sua máquina e nunca deve ser compartilhada. A outra é a chave pública, que você pode distribuir para os serviços em que precisa se autenticar, como GitHub, GitLab ou até servidores de produção, resumindo:

  • SSH (Secure Shell) é um protocolo de comunicação segura entre cliente e servidor.
  • Em vez de login/senha, ele usa criptografia de chave pública/privada.
  • Chave privada fica só na sua máquina.
  • Chave pública você distribui (ex.: no GitLab, GitHub).
  • Quando você tenta se conectar, o servidor checa se a chave pública cadastrada “bate” com a sua chave privada → se sim, você é autenticado sem digitar senha.

Pensa comigo:

  • A chave privada é a chave real da sua casa. Você não empresta pra ninguém.
  • A chave pública é a cópia que você deixa com a portaria do prédio. A portaria (no caso, o GitHub ou GitLab) só vai deixar você entrar se a chave que você tem bater com a cópia que está registrada lá.

Isso garante segurança e, ao mesmo tempo, praticidade.

Como funciona o SSH no Git

Toda vez que você executa um comando como:

git clone [email protected]:usuario/repositorio.git

acontece a seguinte sequência:

  1. O Git vê que você está usando o protocolo SSH.
  2. Ele consulta o ssh-agent da sua máquina, que armazena suas chaves privadas.
  3. O servidor (GitHub, GitLab etc.) verifica se a chave pública correspondente está cadastrada na sua conta.
  4. Se as duas baterem, você é autenticado automaticamente.

Ou seja, sem precisar digitar senha a cada push ou pull.

Leia também: Bash script

Gerando suas chaves SSH

Para começar, você precisa gerar seu par de chaves. No Linux ou Mac, basta rodar:

ssh-keygen -t ed25519 -C "[email protected]"

Se por algum motivo você precisar de compatibilidade com sistemas mais antigos, pode usar RSA de 4096 bits:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Esse comando vai criar dois arquivos na sua pasta ~/.ssh/:

  • id_ed25519 → sua chave privada (secreta).
  • id_ed25519.pub → sua chave pública (essa você pode compartilhar).

Adicionando a chave ao agente

Depois de gerar a chave, você precisa carregá-la no ssh-agent:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Isso permite que o Git acesse sua chave privada sem precisar perguntar a senha dela toda hora.

Cadastrando no GitHub ou GitLab

Agora é a hora de cadastrar a chave pública no serviço que você usa. O processo é parecido em todos:

  1. Copie o conteúdo da sua chave pública: cat ~/.ssh/id_ed25519.pub
  2. Acesse sua conta no GitHub ou GitLab.
  3. Vá em Configurações → SSH Keys.
  4. Clique em Add new SSH key.
  5. Cole o conteúdo da sua chave pública e salve.

Pronto. O servidor agora reconhece sua máquina como confiável.

Testando a conexão

Para ter certeza de que deu certo, rode:

ssh -T [email protected]

ou

ssh -T [email protected]

Se tudo estiver configurado corretamente, você verá uma mensagem de boas-vindas com o seu usuário.

Usando SSH no dia a dia com Git

A partir de agora, prefira sempre as URLs no formato SSH para clonar repositórios:

git clone [email protected]:usuario/repositorio.git

Se já tiver um projeto configurado com HTTPS, você pode trocar para SSH facilmente:

git remote set-url origin [email protected]:usuario/repositorio.git

Assim você não precisa mais ficar digitando usuário e senha.

Boas práticas de segurança

  • Nunca compartilhe sua chave privada.
  • Proteja-a com uma passphrase ao criá-la. Assim, mesmo que alguém consiga copiar sua chave privada, ainda vai precisar da senha.
  • Faça backup da chave privada em um local seguro, como um HD externo criptografado.
  • Se perder a chave ou achar que foi comprometida, gere outra imediatamente e substitua nos serviços em que você a cadastrou.

Trabalhando com múltiplas chaves SSH

É comum precisar usar chaves diferentes, por exemplo, uma para projetos pessoais e outra para o trabalho. Nesse caso, basta gerar chaves adicionais:

ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_ed25519_pessoal
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_ed25519_trabalho

Depois, configure o arquivo ~/.ssh/config para dizer qual chave usar em cada serviço:

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_pessoal

Host gitlab.com
  HostName gitlab.com
  User git
  IdentityFile ~/.ssh/id_ed25519_trabalho

Isso garante que o Git escolha automaticamente a chave certa.

Recursos avançados

Além da autenticação, dá para levar o uso de SSH com Git a um nível mais alto:

Assinar commits com SSH

Hoje em dia o GitHub, por exemplo, já permite que você use sua chave SSH para assinar commits:

git config --global gpg.format ssh
git config --global user.signingkey ~/.ssh/id_ed25519.pub
git config --global commit.gpgSign true

Assim, cada commit vai ter uma assinatura que garante a autoria.

Usar tokens físicos

Outra opção avançada é usar dispositivos como YubiKey para armazenar suas chaves. Isso adiciona uma camada extra de segurança, porque a chave nunca sai do dispositivo físico.

Conclusão

SSH é um daqueles assuntos que parecem complicados à primeira vista, mas quando você entende a lógica, tudo fica claro: é simplesmente uma forma mais segura e prática de autenticação.

No dia a dia com Git, ele elimina a necessidade de ficar digitando usuário e senha a cada push ou pull, além de abrir portas para práticas mais avançadas como assinatura de commits e múltiplas identidades.

Se você ainda não usa SSH nos seus repositórios, recomendo fortemente começar hoje. A curva de aprendizado é pequena, mas o ganho em produtividade e segurança é enorme.

MiniCurso Sujeito Prog Banner Dinâmico
foto de perfil brayan

Brayan

Bacharel em Sistemas de Informação pela Faculdade Maurício de Nassau e desenvolvedor de software. Produzo conteúdo e gerencio blogs. Sou especialista em desenvolvimento web e SEO de sites.

Artigos: 141

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *