Chaves SSH: Pare de Digitar Senhas
Chaves SSH substituem autenticação por senha com pares de chaves criptográficas. Você mantém a chave privada na sua máquina, coloca a chave pública no servidor (ou GitHub), e nunca digita uma senha novamente. É mais seguro e mais conveniente.
Gerar uma Chave
# Ed25519 (recomendado — rápido, seguro, chaves curtas)
ssh-keygen -t ed25519 -C "seu@email.com"
# RSA (compatibilidade legada, se Ed25519 não for suportado)
ssh-keygen -t rsa -b 4096 -C "seu@email.com"Você será perguntado sobre localização e passphrase. Use o local padrão (~/.ssh/id_ed25519) e sempre defina uma passphrase — ela protege a chave se sua máquina for comprometida.
Adicionar ao GitHub
# Copiar chave pública para clipboard
# macOS
pbcopy < ~/.ssh/id_ed25519.pub
# Linux
xclip -selection clipboard < ~/.ssh/id_ed25519.pub
# Windows
cat ~/.ssh/id_ed25519.pub | clipVá ao GitHub → Settings → SSH and GPG keys → New SSH key. Cole. Teste:
ssh -T git@github.com
# Hi username! You've been successfully authenticatedSSH Agent (Não Redigite Sua Passphrase)
# Iniciar o agente
eval "$(ssh-agent -s)"
# Adicionar sua chave (pede passphrase uma vez)
ssh-add ~/.ssh/id_ed25519
# macOS: adicionar ao Keychain (persiste entre reboots)
ssh-add --apple-use-keychain ~/.ssh/id_ed25519O Arquivo SSH Config
O poder real. Crie ~/.ssh/config:
# GitHub pessoal
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
# GitHub do trabalho (conta diferente)
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
# Servidor de produção
Host prod
HostName 203.0.113.42
User deploy
IdentityFile ~/.ssh/id_ed25519
Port 2222
# Jump host (bastion)
Host internal-db
HostName 10.0.1.50
User admin
ProxyJump bastion
Host bastion
HostName bastion.example.com
User admin
IdentityFile ~/.ssh/id_ed25519Agora em vez de ssh deploy@203.0.113.42 -p 2222 -i ~/.ssh/id_ed25519, apenas digite ssh prod.
Para o GitHub do trabalho, clone com: git clone git@github-work:empresa/repo.git
Copiar Chave para Servidor
# O jeito fácil
ssh-copy-id user@servidor
# Jeito manual
cat ~/.ssh/id_ed25519.pub | ssh user@servidor "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
# Corrigir permissões (se login falhar)
ssh user@servidor "chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"Tipos de Chave Comparados
| Tipo | Tamanho | Segurança | Compatibilidade |
|---|---|---|---|
| Ed25519 | 256 bits (fixo) | Excelente | OpenSSH 6.5+ (2014) |
| RSA 4096 | 4096 bits | Boa | Universal |
| ECDSA | 256/384/521 bits | Boa | OpenSSH 5.7+ |
| DSA | 1024 bits | Depreciado | Não use |
Dicas de Segurança
- Sempre use passphrase na chave privada.
- Nunca compartilhe ou commite sua chave privada. O arquivo sem
.pubé privado. - Use chaves diferentes para serviços diferentes (GitHub pessoal, trabalho, servidores).
- Desabilite auth por senha em servidores após configurar SSH keys:
PasswordAuthentication noem/etc/ssh/sshd_config. - Rotacione chaves periodicamente, especialmente quando membros do time saem.
Gere chaves: Gerador de Senhas — crie passphrases fortes para suas chaves SSH.