Poupe 15% em todos os serviços de alojamento

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código: Skills Começar a trabalhar
Secções
Linux Segurança Servidores Virtuais

Conectando e Configurando SSH em um VPS: O Guia Completo de Segurança

Secure shell (SSH) access é a base da gestão profissional de servidores. Quer esteja a implementar um site WordPress, a enviar código via Git, ou a administrar aplicações personalizadas, SSH oferece-lhe um túnel encriptado e autenticado diretamente no seu servidor. Este guia abrangente acompanha-o em cada passo — desde a sua primeira ligação até ao reforço da sua configuração contra ataques do mundo real — para que possa gerir o seu ambiente de VPS Hosting com confiança.

Por que a Segurança SSH é Importante

Cada servidor acessível publicamente enfrenta um bombardeio constante de tentativas automatizadas de força bruta. Minutos após um VPS entrar em operação, bots começam a verificar a porta 22 e tentam combinações comuns de nome de usuário/senha. Uma configuração SSH mal protegida é um dos pontos de entrada mais comuns para atacantes.

A boa notícia: algumas mudanças de configuração deliberadas reduzem drasticamente sua superfície de ataque. Combinado com infraestrutura confiável — como armazenamento com suporte NVMe e proteção DDoS integrada — uma configuração SSH adequadamente endurecida oferece um canal de gerenciamento rápido, resiliente e genuinamente seguro.

Se você ainda não escolheu um ambiente de hospedagem, considere explorar planos de VPS Hosting que incluem acesso root completo, recursos dedicados e a flexibilidade de implementar todas as medidas de segurança abordadas neste guia.

Pré-requisitos

Antes de começar, confirme que tem o seguinte em lugar:

RequisitoDetalhes
Um VPS em funcionamentoQualquer distribuição Linux (Ubuntu, Debian, CentOS, AlmaLinux, etc.) com um SO instalado
Cliente SSHLinux/macOS: comando ssh integrado. Windows: PuTTY, Windows Terminal, ou WSL
Endereço IP do servidorFornecido no seu painel de controlo de alojamento após o aprovisionamento
Credenciais de loginNome de utilizador padrão (root ou um utilizador com permissões sudo) e palavra-passe inicial
Familiaridade básica com terminalCapacidade de executar comandos e editar ficheiros com nano ou vim

> Dica: Se está a gerir múltiplos servidores ou precisa de uma interface gráfica juntamente com SSH, consulte Painéis de Controlo VPS para opções como cPanel, Plesk, e DirectAdmin que complementam o acesso por linha de comandos.

Conectar-se ao seu VPS via SSH

No Linux ou macOS

Abra seu terminal e execute:

ssh username@your_server_ip

Substitua username pelo seu nome de utilizador real (normalmente root para um VPS novo) e your_server_ip pelo endereço IP público do seu servidor.

Exemplo:

ssh root@203.0.113.45

Aviso de primeira conexão:

The authenticity of host '203.0.113.45 (203.0.113.45)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Digite yes e pressione Enter. Isto adiciona a chave do host do servidor ao seu ficheiro ~/.ssh/known_hosts. Nas conexões subsequentes, SSH verificará esta impressão digital automaticamente — se alguma vez mudar inesperadamente, trate-a como um potencial incidente de segurança.

Introduza a sua palavra-passe quando solicitado.

No Windows Usando PuTTY

  1. Descarregue e abra PuTTY em putty.org.
  2. No campo Host Name (or IP address), introduza o endereço IP do seu servidor.
  3. Confirme que Port está definido como 22 e Connection type é SSH.
  4. Clique em Open.
  5. Aceite a impressão digital da chave do host quando solicitado.
  6. Introduza o seu nome de utilizador e palavra-passe.

> Alternativa Windows 10/11: Windows Terminal e PowerShell incluem um cliente OpenSSH nativo. Pode utilizar a mesma sintaxe ssh username@your_server_ip que no Linux/macOS — nenhuma ferramenta de terceiros necessária.

Hardening SSH: Configuração Passo a Passo

Todo o comportamento do SSH é controlado por um único ficheiro de configuração:

/etc/ssh/sshd_config

Abra-o com privilégios elevados:

sudo nano /etc/ssh/sshd_config

Trabalhe em cada passo de hardening abaixo. Após fazer todas as alterações, reiniciará o serviço uma vez — coberto na próxima secção.

Passo 1: Alterar a Porta SSH Padrão

A porta 22 é a primeira porta que os bots verificam. Mover SSH para uma porta não-padrão elimina a grande maioria do ruído automatizado nos seus registos.

Localize esta linha:

#Port 22

Altere-a para uma porta à sua escolha (use um número entre 1024 e 65535 que não seja utilizado por outro serviço):

Port 2222

Remova o # para descomentar a linha. Guarde com CTRL+X, depois Y, depois Enter.

> Importante: Antes de reiniciar SSH, certifique-se de que a sua firewall permite a nova porta. Consulte a nota de firewall abaixo.

Atualize a sua firewall (exemplo UFW):

sudo ufw allow 2222/tcp
sudo ufw deny 22/tcp
sudo ufw reload

Atualize a sua firewall (exemplo firewalld):

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload

Passo 2: Desativar Login de Root

Permitir login direto de root sobre SSH é um risco de segurança significativo. Em vez disso, faça login como um utilizador regular e escale privilégios com sudo quando necessário.

Em sshd_config, encontre:

PermitRootLogin yes

Altere para:

PermitRootLogin no

Antes de desativar o login de root, certifique-se de que tem um utilizador não-root com privilégios sudo:

# Create a new user
adduser adminuser

# Grant sudo privileges
usermod -aG sudo adminuser

Teste que este utilizador pode fazer login e executar comandos sudo *antes* de desativar o login de root e reiniciar SSH.

Passo 3: Desativar Autenticação por Palavra-passe (Após Configurar Chaves)

Uma vez que a autenticação por chave SSH esteja configurada (próxima secção), desative completamente o login baseado em palavra-passe para eliminar o risco de força bruta:

PasswordAuthentication no

Certifique-se também de que estas diretivas relacionadas estão definidas:

ChallengeResponseAuthentication no
UsePAM no

Passo 4: Diretivas Recomendadas Adicionais

Adicione ou verifique estas definições em sshd_config para uma linha de base de hardening abrangente:

# Limit authentication attempts per connection
MaxAuthTries 3

# Disconnect idle sessions after 5 minutes
ClientAliveInterval 300
ClientAliveCountMax 2

# Disable empty passwords
PermitEmptyPasswords no

# Restrict SSH to specific users (replace 'adminuser' with your username)
AllowUsers adminuser

# Use only strong protocol version
Protocol 2

# Disable X11 forwarding if not needed
X11Forwarding no

Configurar Autenticação por Chave SSH

A autenticação por chave SSH substitui senhas por um par de chaves criptográficas: uma chave privada que fica na sua máquina local e uma chave pública que fica no servidor. Mesmo que um atacante conheça seu nome de usuário, ele não pode se autenticar sem sua chave privada.

Passo 1: Gerar um Par de Chaves SSH (na Sua Máquina Local)

ssh-keygen -t ed25519 -C "your_email@example.com"

> Por que Ed25519? É mais rápido e seguro que o algoritmo RSA mais antigo. Se seu sistema exigir RSA para compatibilidade, use ssh-keygen -t rsa -b 4096 em vez disso.

Você será solicitado a escolher um local de salvamento (o padrão ~/.ssh/id_ed25519 é adequado) e definir uma frase-passe. Sempre defina uma frase-passe — ela criptografa sua chave privada para que o acesso físico à sua máquina não comprometa automaticamente seus servidores.

Saída:

Your identification has been saved in /home/you/.ssh/id_ed25519
Your public key has been saved in /home/you/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your_email@example.com

Passo 2: Copiar a Chave Pública para Seu VPS

O método mais fácil usa ssh-copy-id:

ssh-copy-id -i ~/.ssh/id_ed25519.pub username@your_server_ip

Este comando:

  1. Conecta ao seu servidor usando autenticação por senha.
  2. Cria ~/.ssh/authorized_keys no servidor se não existir.
  3. Adiciona sua chave pública a esse arquivo.
  4. Define as permissões corretas automaticamente.

Método manual (se ssh-copy-id não estiver disponível):

# On your local machine, display your public key
cat ~/.ssh/id_ed25519.pub

# On your server, add it manually
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "paste-your-public-key-here" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Passo 3: Verificar Login Baseado em Chave Antes de Desabilitar Senhas

Não desabilite a autenticação por senha até confirmar que o login baseado em chave funciona. Abra uma nova janela de terminal e teste:

ssh -i ~/.ssh/id_ed25519 username@your_server_ip -p 2222

Se você se conectar com sucesso sem ser solicitado a fornecer uma senha (apenas sua frase-passe de chave, se definida), prossiga para desabilitar PasswordAuthentication em sshd_config.

Reiniciar e Verificar o Serviço SSH

Após guardar todas as alterações em sshd_config, valide a sintaxe da configuração antes de reiniciar:

sudo sshd -t

Se nenhum erro for devolvido, reinicie o daemon SSH:

sudo systemctl restart sshd

Verifique se o serviço foi iniciado com sucesso:

sudo systemctl status sshd

Deverá ver Active: active (running) no resultado.

> Dica crítica de segurança: Mantenha a sua sessão SSH atual aberta enquanto testa a nova configuração numa janela separada. Se algo correr mal, a sua sessão existente permanece ativa e pode reverter as alterações.

Testando Sua Configuração Segura

Teste 1: Conectar na Nova Porta com Sua Chave

Da sua máquina local:

ssh username@your_server_ip -p 2222

Resultado esperado: Você está conectado usando sua chave SSH (solicitado para sua frase de passagem da chave se você definiu uma, mas não sua senha do servidor).

Teste 2: Confirmar que o Login Root Está Bloqueado

ssh root@your_server_ip -p 2222

Resultado esperado:

Permission denied (publickey).

ou

root@your_server_ip: Permission denied

Teste 3: Confirmar que a Autenticação por Senha Está Desativada

ssh username@your_server_ip -p 2222 -o PubkeyAuthentication=no

Resultado esperado:

Permission denied (publickey).

Se a autenticação por senha ainda estivesse ativada, você seria solicitado a fornecer uma senha.

Endurecimento Adicional: Fail2Ban

Fail2Ban monitora ficheiros de registo e bane automaticamente endereços IP que mostram sinais de atividade maliciosa — como tentativas repetidas de login SSH falhadas. É um complemento essencial aos passos de endurecimento SSH acima.

Instalar Fail2Ban

Ubuntu/Debian:

sudo apt update && sudo apt install fail2ban -y

CentOS/AlmaLinux/RHEL:

sudo dnf install epel-release -y
sudo dnf install fail2ban -y

Configurar Fail2Ban para SSH

Crie um ficheiro de substituição local (nunca edite o ficheiro padrão jail.conf diretamente):

sudo nano /etc/fail2ban/jail.local

Adicione o seguinte:

[DEFAULT]
bantime  = 3600
findtime = 600
maxretry = 5

[sshd]
enabled  = true
port     = 2222
logpath  = %(sshd_log)s
backend  = %(sshd_backend)s

Ajuste port para corresponder à sua porta SSH personalizada. Guarde, depois ative e inicie Fail2Ban:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Verifique bans ativos e estado da jail:

sudo fail2ban-client status sshd

Cópia de Segurança das Suas Chaves SSH e Configuração

Um servidor bloqueado é um problema grave. Siga estas práticas para evitá-lo:

  • Faça cópia de segurança da sua chave privada para um gestor de palavras-passe encriptado ou armazenamento offline.
  • Guarde uma cópia de sshd_config antes de fazer alterações: sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  • Utilize a consola out-of-band do seu fornecedor de alojamento (acesso VNC/KVM através do painel de controlo) como alternativa se perder o acesso SSH.
  • Documente a sua porta personalizada — é fácil esquecer 2222 quando está a alternar entre servidores.

Emparelhando SSH com a Infraestrutura de Hospedagem Certa

Uma configuração SSH segura é tão forte quanto a infraestrutura subjacente. Considere estes serviços complementares:

  • Servidores Dedicados — Para cargas de trabalho que exigem desempenho máximo e isolamento completo de hardware, os servidores dedicados oferecem controle total sobre as camadas física e de software, incluindo configuração SSH.
  • Certificados SSL — Proteja o lado voltado para a web das suas aplicações com certificados SSL/TLS confiáveis, complementando a segurança SSH do backend do seu servidor.
  • Registo de Domínios — Registe e gerencie o seu domínio juntamente com a sua hospedagem, facilitando a configuração de controlos de acesso baseados em DNS e nomes de anfitrião do servidor.

Conclusão

Uma configuração SSH adequadamente configurada é uma das melhorias de segurança com maior impacto que você pode fazer em qualquer servidor Linux. Para resumir o que você implementou:

Medida de SegurançaBenefício
Porta SSH personalizadaElimina a varredura automatizada da porta 22
Login root desativadoRemove a conta mais visada do acesso remoto
Autenticação por chave SSHSubstitui senhas adivinhadas por prova criptográfica
Autenticação por senha desativadaFecha completamente o vetor de ataque de força bruta
Fail2BanBloqueia automaticamente atacantes persistentes
MaxAuthTries & timeoutsLimita a exposição a ataques lentos ou distribuídos

Estas medidas funcionam em conjunto para criar uma defesa em camadas — cada uma significativa por si só, e significativamente mais forte em combinação.

Quer esteja executando um único site WordPress ou gerenciando uma frota de servidores de aplicações, começar com uma configuração SSH endurecida coloca você no controle. Combine com infraestrutura confiável de Alojamento VPS, mantenha suas chaves com backup e terá um ambiente de servidor seguro e profissional construído para durar.