Quase todo VPS novo começa igual: você entra como root, instala algumas coisas e um mês depois continua como root. Funciona até o dia em que um script colado apaga o diretório errado. Configurar um usuário comum com sudo leva cinco minutos, e a ordem importa mais que os comandos — erre a ordem e você se tranca fora.
Esta é a sequência segura para Ubuntu 22.04/24.04 e Debian 12.
1. Crie o usuário
Como root:
adduser deploy
usermod -aG sudo deploy
O adduser pede uma senha e alguns dados opcionais (é só apertar Enter neles). Escolha uma senha de verdade: você vai digitá-la no sudo. Numa imagem Debian mínima, rode antes apt install -y sudo se o comando não existir.
2. Dê a ele sua chave SSH
O jeito mais fácil é copiar as chaves autorizadas do root mantendo o dono certo:
rsync --archive --chown=deploy:deploy /root/.ssh /home/deploy
Se preferir fazer à mão:
mkdir -p /home/deploy/.ssh
cp /root/.ssh/authorized_keys /home/deploy/.ssh/
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
chmod 600 /home/deploy/.ssh/authorized_keys
Permissões erradas são o motivo clássico de o login por chave falhar em silêncio. O SSH ignora um authorized_keys que outros usuários podem alterar.
3. Teste antes de mudar qualquer coisa
Mantenha a sessão de root aberta. Num terminal novo:
ssh -p 22 deploy@203.0.113.10
sudo whoami
Use seu IP e sua porta — num plano NAT é a porta SSH pessoal do painel. Se sudo whoami imprimir root, está tudo certo. Se o login falhar, você ainda tem a janela de root para corrigir.
4. Desative o login de root
Agora feche a porta. Crie um pequeno arquivo drop-in em vez de editar a configuração principal:
cat > /etc/ssh/sshd_config.d/10-hardening.conf <<'EOF'
PermitRootLogin no
PasswordAuthentication no
EOF
sshd -t && systemctl reload ssh
O sshd -t confere a sintaxe antes. Configuração quebrada mais reload é como as pessoas acabam precisando do console. PasswordAuthentication no só faz sentido quando o login por chave já funciona para o novo usuário — o que você acabou de testar.
Abra mais um terminal e confirme que root é recusado e que deploy ainda entra. Depois feche a sessão antiga de root.
5. Opcional: sudo sem senha para automação
Se um script de deploy precisa de sudo sem pedir senha, dê exatamente isso e nada além:
visudo -f /etc/sudoers.d/deploy
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart myapp
Sinceramente, NOPASSWD: ALL é tentador, mas significa que uma chave roubada vira root. Limite aos comandos que a automação executa.
Se algo der errado
O console web do painel não depende de SSH nem do firewall. Entre por ele, corrija o arquivo em /etc/ssh/sshd_config.d/, faça o reload e pronto. Descrevemos todo o processo de recuperação em como voltar a acessar um VPS trancado.
Próximos passos
- Passe de vez para login só por chave: autenticação por chave SSH.
- Reduza o ruído de força bruta: fail2ban.
- Complete o básico com o checklist de segurança para VPS novo.
As opções de acesso de cada plano estão na documentação de acesso. Até um Nano de $3 merece um usuário não root — é a melhoria de segurança mais barata que existe.
Comentários
Nenhum comentário ainda. Seja o primeiro.