Configurar o OpenSSH no Ubuntu
Como instalar e configurar o servidor OpenSSH no Ubuntu com segurança: serviço ssh, chaves ed25519, hardening do sshd_config e firewall UFW, passo a passo.

Configurar o OpenSSH no Ubuntu vai muito além de instalar o pacote: a configuração padrão aceita senha e é uma das principais portas de entrada para ataques de força bruta em servidores expostos à internet. O trabalho que importa é o hardening — trocar senha por chave, bloquear o root e liberar apenas a porta certa no firewall, sempre testando o novo acesso antes de fechar a sessão atual. O SSH (Secure Shell) é o protocolo padrão para administrar servidores Linux remotamente com um canal criptografado, e o OpenSSH é a implementação usada por padrão no Ubuntu.
O que é o OpenSSH
O OpenSSH é a implementação de código aberto do protocolo SSH (Secure Shell), desenvolvida pelo projeto OpenBSD. Ele cria um canal de comunicação criptografado com um servidor remoto, substituindo protocolos antigos e inseguros como Telnet e rsh. No Ubuntu, o OpenSSH é dividido em dois pacotes: openssh-client (para conectar-se a outros servidores) e openssh-server (para receber conexões).
Uma observação de nomenclatura que confunde bastante: no Ubuntu, o serviço do systemd chama-se ssh, mas o daemon e o arquivo de configuração usam o nome histórico sshd. Existe um alias sshd para o serviço, então tanto systemctl restart ssh quanto systemctl restart sshd funcionam.
Passo 1: instalar o servidor OpenSSH no Ubuntu
Em versões recentes do Ubuntu, o cliente SSH já vem instalado. Para o servidor, atualize os índices de pacotes e instale o openssh-server:
sudo apt update
sudo apt install openssh-server -yVerifique se o serviço está ativo:
sudo systemctl status sshVocê deve ver Active: active (running). Para garantir que ele suba automaticamente a cada boot:
sudo systemctl enable sshPasso 2: conectar ao servidor por SSH
De outra máquina (ou da própria, para testar), conecte-se informando usuário e endereço:
ssh usuario@ip-do-servidorSe o servidor escutar em uma porta diferente da padrão (22), use -p minúsculo:
ssh -p 2222 usuario@ip-do-servidorNa primeira conexão, o SSH exibe a fingerprint do servidor e pede confirmação. Isso é normal e importante: confirme que a fingerprint corresponde ao servidor esperado para evitar um ataque de intermediário (man-in-the-middle).
Passo 3: gerar e configurar chaves SSH
Trocar a senha por chave é a mudança de segurança mais importante que você pode fazer. A chave usa criptografia assimétrica: você mantém a chave privada na sua máquina e coloca a chave pública no servidor. Sem a privada, ninguém entra — nem com a senha correta, depois que a senha é desativada.
Gerar o par de chaves (na sua máquina local)
ssh-keygen -t ed25519 -C "seu-email@exemplo.com"O algoritmo ed25519 é o recomendado hoje — mais curto, rápido e seguro. Se precisar de compatibilidade com sistemas antigos, o RSA ainda é válido desde que gerado com pelo menos 3072 bits (ssh-keygen -t rsa -b 4096). Defina uma passphrase quando solicitado: ela cifra o arquivo da chave privada, protegendo-o caso a máquina seja comprometida.
Copiar a chave pública para o servidor
ssh-copy-id usuario@ip-do-servidorO ssh-copy-id adiciona sua chave pública ao arquivo ~/.ssh/authorized_keys do servidor. Para fazer isso manualmente, cole o conteúdo de ~/.ssh/id_ed25519.pub naquele arquivo e garanta as permissões corretas — o OpenSSH recusa a chave se elas estiverem abertas demais:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keysTestar o acesso com chave
ssh usuario@ip-do-servidorSe a chave estiver configurada, você entra sem digitar a senha do usuário (apenas a passphrase da chave, se definida). Confirme que esse login funciona antes de seguir para o próximo passo.
Passo 4: endurecer o arquivo sshd_config
O arquivo principal de configuração do servidor é o /etc/ssh/sshd_config. No Ubuntu atual, ele carrega no fim os arquivos de /etc/ssh/sshd_config.d/, que podem sobrescrever o que estiver acima — se uma diretiva não estiver fazendo efeito, verifique se algum drop-in nessa pasta a está redefinindo. Faça sempre um backup antes de editar:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo nano /etc/ssh/sshd_configAs diretivas que mais importam para a segurança:
| Diretiva | Valor recomendado | O que faz |
|---|---|---|
PubkeyAuthentication | yes | Habilita a autenticação por chave |
PasswordAuthentication | no | Desativa a senha — encerra o brute force |
PermitRootLogin | no | Impede o login direto como root (use prohibit-password se precisar de chave para o root) |
AllowUsers | seuusuario | Restringe o SSH a uma lista de usuários |
MaxAuthTries | 3 | Limita as tentativas de autenticação por conexão |
LoginGraceTime | 30 | Tempo máximo, em segundos, para concluir o login |
Port | 2222 (opcional) | Mudar de 22 não é segurança de verdade, mas reduz o ruído de bots automáticos |
X11Forwarding | no | Desativa o encaminhamento gráfico quando não é necessário |
Depois de editar, valide a sintaxe e aplique as mudanças:
sudo sshd -t
sudo systemctl restart sshO sshd -t testa o arquivo e aponta erros sem derrubar o serviço — vale sempre rodá-lo antes do restart.
Atenção ao lockout: antes de reiniciar com PasswordAuthentication no, confirme que o acesso por chave está funcionando abrindo uma segunda sessão SSH. Se fechar a sessão atual sem validar o novo acesso, você pode se trancar para fora do servidor.
Passo 5: liberar a porta no firewall (UFW)
O UFW (Uncomplicated Firewall) é o gerenciador de firewall padrão do Ubuntu. Ele traz um perfil chamado OpenSSH, que libera a porta 22 automaticamente:
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw statusSe você trocou a porta, o perfil OpenSSH não serve — libere a porta nova explicitamente antes de reiniciar o SSH e de fechar a sessão atual:
sudo ufw allow 2222/tcpVerifique também se o seu provedor de VPS tem um firewall externo (como os Security Groups da AWS ou as regras de nuvem da Oracle/Google) que precisa liberar a mesma porta — de nada adianta abrir o UFW se o firewall da nuvem continuar bloqueando.
Passo 6 (opcional): banir força bruta com Fail2Ban
O Fail2Ban monitora o log de autenticação e bane temporariamente os IPs que erram a autenticação muitas vezes seguidas — uma camada extra útil em servidores expostos:
sudo apt install fail2ban -y
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.localEdite sempre o jail.local (nunca o jail.conf, que é sobrescrito nas atualizações). Na seção [sshd], ajuste o comportamento — informe a porta correta caso a tenha trocado:
[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600
findtime = 600Reinicie e confira o status:
sudo systemctl restart fail2ban
sudo fail2ban-client status sshdTransferir arquivos com SCP e SFTP
O OpenSSH não serve só para acesso ao terminal — ele também habilita transferência segura de arquivos pelo mesmo canal criptografado. Note que, tanto no scp quanto no sftp, a porta é indicada com -P maiúsculo (diferente do -p minúsculo do ssh):
# Enviar um arquivo local para o servidor
scp -P 2222 arquivo.txt usuario@servidor:/caminho/destino/
# Baixar um arquivo do servidor
scp -P 2222 usuario@servidor:/caminho/arquivo.txt ./local/
# Sessão interativa de transferência
sftp -P 2222 usuario@servidorClientes gráficos como FileZilla e Cyberduck também falam SFTP, úteis para quem prefere uma interface visual.
Perguntas frequentes sobre OpenSSH no Ubuntu
Qual a diferença entre SSH, OpenSSH e SFTP?
SSH é o protocolo de acesso remoto criptografado. OpenSSH é a implementação de código aberto desse protocolo, mantida pelo projeto OpenBSD e usada por padrão no Ubuntu. SFTP (SSH File Transfer Protocol) é um subprotocolo que roda dentro do canal SSH para transferir arquivos com segurança — é diferente do FTP tradicional e sempre criptografado.
Como tornar o SSH mais seguro no Ubuntu?
Use autenticação por chave e desative a senha (PasswordAuthentication no), bloqueie o login direto de root (PermitRootLogin no ou prohibit-password), limite quem pode entrar com AllowUsers e libere apenas a porta do SSH no firewall (sudo ufw allow OpenSSH). Trocar a porta padrão e usar o Fail2Ban reduzem o barulho de bots. Aplique cada mudança com sudo systemctl restart ssh e sempre teste numa segunda sessão antes de fechar a atual.
No Ubuntu o serviço é ssh ou sshd?
No Ubuntu, o serviço do systemd chama-se ssh — é ele que você usa em sudo systemctl status ssh, enable ssh e restart ssh. Existe um alias sshd que aponta para o mesmo serviço, então sudo systemctl restart sshd também funciona. Já o processo em execução e o daemon continuam se chamando sshd, e o arquivo de configuração é o /etc/ssh/sshd_config.
Como verificar quem está conectado via SSH no servidor?
Use os comandos who ou w para ver as sessões ativas no momento e last para o histórico de logins. Para investigar tentativas suspeitas de acesso, consulte o log de autenticação com sudo grep "Failed password" /var/log/auth.log ou, em sistemas com journald, sudo journalctl -u ssh.
Como renovar ou revogar uma chave SSH?
Para revogar o acesso de uma chave, remova a linha correspondente do arquivo ~/.ssh/authorized_keys no servidor. Para renovar, gere um novo par com ssh-keygen -t ed25519, adicione a nova chave pública ao authorized_keys com ssh-copy-id, teste o login com ela e só então remova a chave antiga. Faça a troca com uma segunda sessão aberta para não se trancar fora.
Conclusão
Configurar o OpenSSH corretamente é uma das tarefas mais fundamentais na administração de qualquer servidor Linux. Seguindo os passos deste guia — instalar o pacote, migrar para chaves SSH, endurecer o sshd_config, liberar apenas a porta certa no firewall e testar cada mudança antes de fechar a sessão — você transforma um acesso remoto padrão em um ambiente muito mais resistente. Em servidores de produção, isso não é opcional: é o mínimo esperado.
Para os detalhes de cada diretiva, a referência definitiva é a documentação oficial do OpenSSH. E, para mais conteúdos práticos, confira a seção de tecnologia e infraestrutura de TI no Atraca.


