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.
Tabela de Conteúdo
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:
- O Git vê que você está usando o protocolo SSH.
- Ele consulta o
ssh-agent
da sua máquina, que armazena suas chaves privadas. - O servidor (GitHub, GitLab etc.) verifica se a chave pública correspondente está cadastrada na sua conta.
- 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:
- Copie o conteúdo da sua chave pública:
cat ~/.ssh/id_ed25519.pub
- Acesse sua conta no GitHub ou GitLab.
- Vá em Configurações → SSH Keys.
- Clique em Add new SSH key.
- 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.