Como Instalar e Configurar um Servidor SSH no Debian (Guia Completo)
SSH (Secure Shell) é um dos protocolos mais fundamentais na administração moderna de servidores. Fornece um canal encriptado e autenticado para aceder e gerir remotamente servidores Linux — tornando-o uma ferramenta indispensável para administradores de sistemas, programadores e qualquer pessoa que gira uma máquina remota. Quer esteja a gerir um ambiente de Alojamento VPS ou um Servidor Dedicado, instalar e proteger corretamente o seu servidor SSH é uma das primeiras tarefas que deve concluir.
Neste guia abrangente, aprenderá como instalar o OpenSSH no Debian, configurá-lo de forma segura, configurar a autenticação baseada em chaves e aplicar medidas de proteção de melhores práticas para proteger o seu servidor contra acessos não autorizados.
Pré-requisitos
Antes de começar, certifique-se de que tem:
- Um servidor baseado em Debian (Debian 10 Buster, 11 Bullseye ou 12 Bookworm)
- Um utilizador não-root com privilégios
sudo, ou acesso root direto para a configuração inicial - Familiaridade básica com a linha de comandos Linux
- Acesso de rede ao seu servidor
Passo 1: Atualize o Seu Sistema e Instale o Servidor OpenSSH
Antes de instalar qualquer software, é boa prática atualizar o índice de pacotes e atualizar os pacotes existentes para as suas versões mais recentes. Isto garante compatibilidade e reduz vulnerabilidades de segurança.
sudo apt update && sudo apt upgrade -yAgora instale o pacote do servidor OpenSSH:
sudo apt install openssh-server -yO gestor de pacotes irá descarregar e instalar o OpenSSH juntamente com quaisquer dependências necessárias. Assim que a instalação estiver concluída, o serviço SSH é normalmente iniciado automaticamente.
Verifique se o Serviço SSH Está em Execução
Confirme que o serviço ssh está ativo e ativado:
sudo systemctl status sshDeverá ver uma saída semelhante a:
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since ...Se o serviço não estiver em execução, inicie-o manualmente e ative-o para iniciar no arranque:
sudo systemctl start ssh
sudo systemctl enable sshPasso 2: Compreender o Ficheiro de Configuração SSH
O ficheiro de configuração principal do daemon SSH está localizado em:
/etc/ssh/sshd_configEste ficheiro controla praticamente todos os aspetos do comportamento do seu servidor SSH — desde a porta em que escuta, até aos métodos de autenticação permitidos. Antes de fazer quaisquer alterações, crie uma cópia de segurança do ficheiro original:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bakAgora abra o ficheiro com um editor de texto:
sudo nano /etc/ssh/sshd_configAs secções abaixo guiam-no pelas opções de configuração mais importantes.
Passo 3: Proteja a Sua Configuração SSH
3.1 Altere a Porta SSH Predefinida (Recomendado)
Por predefinição, o SSH escuta na porta 22. Isto é amplamente conhecido, e bots automatizados verificam constantemente a internet em busca de conexões abertas na porta 22 para tentar ataques de força bruta. Alterar a porta para um valor não padrão reduz significativamente este ruído.
Localize a seguinte linha (pode estar comentada com #):
#Port 22Descomente-a e altere o valor:
Port 2222> Nota: Escolha um número de porta entre 1024 e 65535 que não esteja já em uso por outro serviço. Alternativas comuns incluem 2222, 2200 ou 4422. Lembre-se de atualizar as suas regras de firewall em conformidade (consulte o Passo 5).
3.2 Desative o Login Root (Fortemente Recomendado)
Permitir o login root direto via SSH é um risco de segurança significativo. Se um atacante adivinhar ou forçar a senha root, obtém controlo total do seu servidor. Desative-o encontrando e modificando esta diretiva:
PermitRootLogin noSe precisar de realizar tarefas administrativas, inicie sessão como utilizador regular e escale privilégios usando sudo.
3.3 Restrinja o Acesso SSH a Utilizadores Específicos
Pode criar uma lista de permissões de contas de utilizador específicas que têm permissão para iniciar sessão via SSH. Isto impede que contas não autorizadas ou do sistema sejam usadas como pontos de entrada:
AllowUsers your_username deploy_userAlternativamente, pode restringir o acesso por grupo:
AllowGroups sshusers3.4 Desative a Autenticação por Senha (Após Configurar a Autenticação por Chave)
Assim que tiver a autenticação por chave SSH a funcionar (consulte o Passo 6), desative completamente os logins baseados em senha para eliminar vetores de ataque de força bruta:
PasswordAuthentication no3.5 Diretivas Adicionais de Proteção
Adicione ou modifique as seguintes linhas para uma postura de segurança mais robusta:
# Disable empty passwords
PermitEmptyPasswords no
# Limit authentication attempts per connection
MaxAuthTries 3
# Set idle session timeout (seconds)
ClientAliveInterval 300
ClientAliveCountMax 2
# Disable X11 forwarding if not needed
X11Forwarding no
# Use only SSH Protocol 2
Protocol 2
# Restrict to specific address family (IPv4 only example)
AddressFamily inetA sua secção relevante final de /etc/ssh/sshd_config deverá ter um aspeto semelhante a este:
Port 2222
PermitRootLogin no
MaxAuthTries 3
PasswordAuthentication no
PermitEmptyPasswords no
AllowUsers your_username
X11Forwarding no
ClientAliveInterval 300
ClientAliveCountMax 2Passo 4: Valide a Configuração e Reinicie o SSH
Antes de reiniciar o serviço, teste sempre o seu ficheiro de configuração em busca de erros de sintaxe. Um sshd_config mal configurado pode bloqueá-lo fora do seu servidor:
sudo sshd -tSe não forem devolvidos erros, aplique as alterações reiniciando o daemon SSH:
sudo systemctl restart sshVerifique se o serviço reiniciou corretamente:
sudo systemctl status ssh> ⚠️ Importante: Antes de fechar a sua sessão SSH atual, abra uma segunda janela de terminal e teste a nova configuração. Desta forma, se algo correr mal, ainda tem uma sessão ativa para corrigir o problema.
Passo 5: Atualize as Regras de Firewall
Se estiver a usar UFW (Uncomplicated Firewall) — a ferramenta de firewall predefinida no Debian — precisa de permitir tráfego na sua nova porta SSH.
Se alterou a porta para 2222:
sudo ufw allow 2222/tcp
sudo ufw reloadSe manteve a porta predefinida 22:
sudo ufw allow ssh
sudo ufw reloadVerifique o estado atual da firewall:
sudo ufw status verboseSe o UFW ainda não estiver ativado, ative-o (certifique-se de que a sua porta SSH está permitida primeiro para evitar bloqueio):
sudo ufw enablePasso 6: Configure a Autenticação SSH Baseada em Chaves
A autenticação por chave SSH é muito mais segura do que o login baseado em senha. Utiliza criptografia assimétrica — um par de chaves composto por uma chave privada (mantida em segredo na sua máquina cliente) e uma chave pública (armazenada no servidor). Mesmo que um atacante conheça o seu nome de utilizador, não pode iniciar sessão sem a chave privada.
6.1 Gere um Par de Chaves SSH na Sua Máquina Cliente
Execute o seguinte comando na sua máquina local (não no servidor):
ssh-keygen -t ed25519 -C "your_email@example.com"> Porquê Ed25519? Ed25519 é um algoritmo moderno de curva elíptica que oferece melhor segurança e desempenho em comparação com o algoritmo RSA mais antigo. Se o seu sistema não o suportar, use RSA com uma chave de 4096 bits: ssh-keygen -t rsa -b 4096
Quando solicitado, escolha um local de gravação (o predefinido é ~/.ssh/id_ed25519) e defina uma frase-passe forte para uma camada adicional de proteção.
6.2 Copie a Chave Pública para o Seu Servidor
Use ssh-copy-id para transferir de forma segura a sua chave pública para o servidor:
ssh-copy-id -p 2222 username@your_server_ipEste comando acrescenta a sua chave pública a ~/.ssh/authorized_keys no servidor com as permissões corretas.
Se ssh-copy-id não estiver disponível, pode fazê-lo manualmente:
# On your local machine, display your public key:
cat ~/.ssh/id_ed25519.pub
# On the server, add it to authorized_keys:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "your_public_key_here" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys6.3 Teste o Login Baseado em Chave
A partir da sua máquina cliente, ligue-se ao servidor:
ssh -p 2222 username@your_server_ipDeverá ser solicitada a sua frase-passe da chave (não a sua senha de conta). Uma vez confirmada, está conectado de forma segura.
6.4 Desative a Autenticação por Senha
Agora que a autenticação por chave está a funcionar, volte a /etc/ssh/sshd_config e certifique-se de que:
PasswordAuthentication noReinicie o SSH para aplicar:
sudo systemctl restart sshPasso 7: Monitorize e Mantenha a Segurança SSH
Instalar e configurar o SSH não é uma tarefa única. A monitorização contínua é essencial para detetar tentativas de intrusão e manter um ambiente seguro.
Verifique Tentativas de Login Falhadas
sudo journalctl -u ssh | grep "Failed password"Ou usando lastb para ver tentativas de login falhadas:
sudo lastb | head -20Instale o Fail2Ban para Bloquear Ataques de Força Bruta
O Fail2Ban monitoriza ficheiros de registo e bloqueia automaticamente endereços IP que mostrem comportamento malicioso (como tentativas de login falhadas repetidas):
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2banCrie uma configuração de jail local para SSH:
sudo nano /etc/fail2ban/jail.localAdicione o seguinte:
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
findtime = 600Reinicie o Fail2Ban para aplicar:
sudo systemctl restart fail2banMantenha o OpenSSH Atualizado
Atualize regularmente o OpenSSH para corrigir vulnerabilidades conhecidas:
sudo apt update && sudo apt upgrade openssh-server -yLigar ao Seu Servidor SSH: Referência Rápida
| Cenário | Comando |
|---|---|
| Porta predefinida (22) | ssh username@your_server_ip |
| Porta personalizada | ssh -p 2222 username@your_server_ip |
| Ficheiro de identidade específico | ssh -i ~/.ssh/id_ed25519 username@your_server_ip |
| Saída detalhada (depuração) | ssh -v username@your_server_ip |
| Copiar ficheiros via SSH | scp -P 2222 file.txt username@your_server_ip:/path/ |
Escolher o Ambiente de Alojamento Certo para SSH
Os passos neste guia aplicam-se a qualquer servidor baseado em Debian, mas o tipo de alojamento que utiliza afeta a forma como acede e gere o seu ambiente:
- Alojamento VPS: Um VPS com cPanel ou outros Painéis de Controlo VPS dá-lhe acesso SSH root completo juntamente com uma interface de gestão gráfica — ideal para utilizadores que querem tanto poder como conveniência.
- Servidores Dedicados: Com um Servidor Dedicado, tem controlo completo ao nível do hardware, tornando a configuração SSH ainda mais crítica, pois é o único responsável pela segurança da máquina.
- Alojamento Partilhado: Os planos de Alojamento Web Partilhado normalmente fornecem acesso SSH limitado ou nenhum, pois o ambiente é partilhado entre vários utilizadores. Se o SSH for um requisito, a atualização para um VPS é o caminho recomendado.
Conclusão
Instalar e configurar um servidor SSH no Debian é uma competência fundamental para qualquer administrador de sistemas ou programador que trabalhe com servidores Linux remotos. Ao seguir este guia, você:
- ✅ Instalou o Servidor OpenSSH no Debian
- ✅ Protegeu a configuração SSH alterando a porta predefinida, desativando o login root e restringindo o acesso de utilizadores
- ✅ Configurou a autenticação SSH baseada em chaves para logins seguros sem senha
- ✅ Configurou regras de firewall para proteger a sua porta SSH
- ✅ Implementou o Fail2Ban para se defender contra ataques de força bruta
- ✅ Estabeleceu uma rotina de monitorização e manutenção
Um servidor SSH devidamente protegido reduz drasticamente a sua superfície de ataque e fornece-lhe um gateway encriptado e fiável para gerir a sua infraestrutura remotamente. Quer esteja apenas a começar com o seu primeiro servidor ou a proteger um ambiente de produção, estas práticas são elementos fundamentais de um sistema Linux seguro.
