Introdução
Se você acabou de comprar uma VPS e está começando a hospedar seus próprios serviços, esta é uma das melhorias de segurança mais importantes que você pode fazer.
Ao trocar para autenticação por chave SSH e desativar o login por senha, seu servidor fica praticamente imune a ataques de força bruta — mesmo que alguém descubra sua senha ou que você ainda esteja usando a porta padrão 22.
Passo 1: Gere um par de chaves SSH na sua máquina local
Linux e macOS
Abra um terminal e rode:
ssh-keygen -t rsa -b 4096
ou (formato mais novo, recomendado):
Bash
ssh-keygen -t ed25519
Aperte Enter para aceitar o local padrão do arquivo e deixe a senha da chave (passphrase) em branco (é só apertar Enter duas vezes).
Suas chaves serão salvas como:
- Chave privada: ~/.ssh/id_rsa ou ~/.ssh/id_ed25519
- Chave pública: ~/.ssh/id_rsa.pub ou ~/.ssh/id_ed25519.pub
Nunca compartilhe a chave privada!
Windows (PowerShell)
Abra o PowerShell e rode:
ssh-keygen.exe -t ed25519
(ou -t rsa -b 4096 se o ed25519 não for suportado)
Aperte Enter em todas as perguntas (sem passphrase). As chaves serão criadas em C:\Users\YourUser.ssh\
Passo 2: Copie sua chave pública para a VPS
Linux e macOS (método mais fácil)
ssh-copy-id user@your-vps-ip
Troque user e your-vps-ip pelo seu nome de usuário e pelo IP do servidor.
Windows
- Cole sua chave pública (é uma linha longa que começa com ssh-ed25519 ou ssh-rsa) → salve com Ctrl+O → Enter → Ctrl+X
- Teste: abra um terminal/PowerShell novo e tente entrar. Deve funcionar sem pedir senha.
Edite o arquivo: (Bash)
nano ~/.ssh/authorized_keys
Crie a pasta .ssh e o arquivo authorized_keys (se ainda não existirem): (Bash)
mkdir -p ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
Entre na sua VPS normalmente (com senha): (PowerShell)
ssh user@your-vps-ip
Copie sua chave pública para a área de transferência: (PowerShell)
Get-Content $HOME\.ssh\id_ed25519.pub | Set-Clipboard
(ou id_rsa.pub se você usou RSA)
Passo 3: Desative a autenticação por senha
Agora que o login com chave funciona, desative completamente o login por senha.
Entre na sua VPS (usando sua chave) e edite a configuração do SSH:
sudo nano /etc/ssh/sshd_config
Encontre e altere (ou adicione) estas linhas:
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
PubkeyAuthentication yes
Salve e saia.
Reinicie o serviço SSH:
sudo systemctl restart sshd
(ou sudo service ssh restart em sistemas mais antigos)
Teste final: tente entrar a partir de um terminal novo. Só deve funcionar com a sua chave privada — tentativas com senha serão recusadas na hora.
Pronto!
Agora sua VPS está protegida contra:
- Ataques de força bruta
- Credential stuffing (uso de senhas vazadas em massa)
- Senhas fracas ou vazadas
Mesmo que um invasor saiba seu usuário e sua senha, ele não consegue entrar sem o arquivo da sua chave privada.
Dica de mestre: guarde um backup da sua chave privada em local seguro e considere adicionar uma passphrase depois, usando ssh-keygen -p.
Obrigado pela leitura! 😊