Skip to main content
Conteúdo do guia
Iniciante14 min

Configuração de VPS Hetzner

Do servidor vazio a uma máquina pronta para produção e segura. Escolha como deseja configurar o seu servidor.

Publicado:
PARA AGENTE DE IAChatGPTClaude
Repositório GitHub

Configuração automática via IA

Conceda ao seu assistente de IA acesso a este repositório. Ele executará automaticamente todas as verificações, configurará a segurança e gerará um arquivo com todos os acessos (credentials guide) no seu computador.

Abrir Repositório GitHub

1. Criação da chave SSH (Localmente)

Executado no seu computador (Mac ou Linux) ANTES de conectar-se ao servidor.

bash
ssh-keygen -t ed25519 -C "{username}@{nickname}" -f ~/.ssh/{nickname}_key -N "" cat ~/.ssh/{nickname}_key.pub

Copie a saída do segundo comando (ela começa com ssh-ed25519 ...). Esta é sua chave pública.

2. Acesso como Root

Conecte-se ao servidor usando a senha que a Hetzner enviou por e-mail.

Aviso

A Hetzner pode solicitar a alteração da senha. Digite a senha atual e depois a nova senha temporária duas vezes. Se a conexão for interrompida após isso, basta reconectar-se usando a nova senha.

bash
ssh root@{SERVER_IP}

3. Atualização do sistema

Atualize todos os pacotes em modo não interativo (sem pop-ups do grub).

bash
apt update && DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt upgrade -y

4. Criação de usuário com sudo

Trabalhar como root é perigoso. Criamos um usuário comum e concedemos a ele privilégios administrativos.

bash
useradd -m -s /bin/bash {username} echo "{username}:YOUR_SECURE_PASSWORD" | chpasswd usermod -aG sudo {username}

5. Implantação da chave SSH

Gravaremos a chave pública que você copiou na Etapa 1 no servidor.

bash
mkdir -p /home/{username}/.ssh echo "{PUBLIC_KEY_CONTENT}" > /home/{username}/.ssh/authorized_keys chmod 700 /home/{username}/.ssh chmod 600 /home/{username}/.ssh/authorized_keys chown -R {username}:{username} /home/{username}/.ssh

6. Verificação de login

Importante

CHECKPOINT OBRIGATÓRIO Não feche a sessão root! Abra uma nova janela de terminal no seu PC e tente entrar usando a chave. Somente após o login bem-sucedido você deve prosseguir.

Verifique se o sudo funciona (o sistema deve solicitar a senha definida na Etapa 4 e exibir "root"):

bash
ssh -i ~/.ssh/{nickname}_key {username}@{SERVER_IP} sudo whoami

7. Firewall (UFW)

Execute todos os comandos seguintes como seu novo usuário (com sudo). Configuramos a política "bloquear tudo que entra, exceto SSH, HTTP e HTTPS".

bash
sudo apt install -y ufw sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow ssh sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw --force enable sudo ufw status

8. Proteção do kernel (sysctl)

Aplicamos parâmetros para proteção contra ataques de rede.

bash
sudo tee /etc/sysctl.d/99-security.conf << 'EOF' net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.tcp_syncookies = 1 net.ipv4.conf.all.log_martians = 1 net.ipv4.conf.default.log_martians = 1 net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.default.accept_source_route = 0 EOF sudo sysctl -p /etc/sysctl.d/99-security.conf

9. Pacotes básicos e horário

O horário preciso é crítico para logs, certificados SSL e fail2ban.

bash
sudo apt install -y chrony curl wget git unzip net-tools sudo systemctl enable chrony

10. Configuração local do SSH

Configuração de um atalho no seu PC local, para que futuramente você possa conectar-se com o comando curto ssh {nickname}.

bash
mkdir -p ~/.ssh && touch ~/.ssh/config && chmod 600 ~/.ssh/config cat >> ~/.ssh/config << 'EOF' Host {nickname} HostName {SERVER_IP} User {username} IdentityFile ~/.ssh/{nickname}_key IdentitiesOnly yes EOF

11. Verificação de segurança

Verifique se o comando curto funciona a partir do PC local e se as proteções básicas estão ativas.

bash
ssh {nickname} sudo ufw status sysctl net.ipv4.tcp_syncookies

12. Bloqueio final

Instalamos proteção contra brute-force (fail2ban) e bloqueamos permanentemente o login direto como root.

bash
sudo apt install -y fail2ban sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo systemctl enable fail2ban sudo systemctl start fail2ban sudo tee /etc/ssh/sshd_config.d/99-hardening.conf << 'EOF' PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes AuthenticationMethods publickey EOF sudo sshd -t && sudo systemctl restart ssh
Este guia é totalmente gratuito. Se ele te poupou uma noite, você pode apoiar o crescimento do projeto.
Apoiar o autor