Como configurar o OpenSSH no Ubuntu: guia completo do zero ao seguro
O SSH (Secure Shell) é o protocolo padrão para acessar servidores Linux remotamente de forma segura. No Ubuntu, o OpenSSH é a implementação mais usada — e configurá-lo corretamente vai muito além de apenas instalar o pacote. Uma configuração descuidada é uma das principais portas de entrada para ataques em servidores expostos à internet.
Neste guia você vai aprender a instalar e configurar o OpenSSH no Ubuntu passo a passo, gerar e usar chaves SSH, proteger o servidor contra ataques de força bruta e aplicar as melhores práticas de segurança para ambientes de produção.
- O que é: implementação open source do protocolo SSH para acesso remoto seguro a servidores Linux.
- Instalação:
sudo apt install openssh-server— em segundos o servidor já está rodando. - Segurança essencial: desabilitar login por senha, usar apenas chaves SSH, trocar a porta padrão (22) e usar Fail2Ban.
- Onde é usado: administração de servidores VPS, automação de deploy, tunneling, transferência de arquivos (SCP/SFTP).
O que é OpenSSH?
OpenSSH é a implementação de código aberto do protocolo SSH (Secure Shell), desenvolvida pelo projeto OpenBSD. Ele permite conectar-se a um servidor remoto com um canal de comunicação criptografado — substituindo protocolos antigos e inseguros como Telnet e rsh. No Ubuntu, o OpenSSH é dividido em dois pacotes: openssh-client (para conectar a outros servidores) e openssh-server (para receber conexões).
Passo 1: Instalando o OpenSSH Server no Ubuntu
Em versões recentes do Ubuntu, o cliente SSH já vem instalado. Para o servidor, execute:
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 habilitá-lo para iniciar automaticamente com o sistema:
sudo systemctl enable sshPasso 2: Conectando ao servidor por SSH
De outra máquina (ou da própria, para teste), conecte com:
ssh usuario@ip-do-servidorPara especificar uma porta diferente da padrão (22):
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 o fingerprint corresponde ao servidor esperado para evitar ataques de man-in-the-middle.
Passo 3: Gerando e configurando chaves SSH
Usar chaves SSH em vez de senha é a prática de segurança mais importante que você pode adotar. Uma chave SSH usa criptografia assimétrica — você mantém a chave privada local e coloca a chave pública no servidor.
Gerando o par de chaves (na sua máquina local)
ssh-keygen -t ed25519 -C "seu-email@exemplo.com"O algoritmo ed25519 é o recomendado atualmente — mais seguro e rápido que RSA 2048. Defina uma passphrase quando solicitado — ela protege sua chave privada caso o arquivo seja comprometido.
Copiando a chave pública para o servidor
ssh-copy-id usuario@ip-do-servidorOu manualmente, adicionando o conteúdo de ~/.ssh/id_ed25519.pub ao arquivo ~/.ssh/authorized_keys no servidor.
Testando o acesso com chave
ssh usuario@ip-do-servidorSe a chave foi configurada corretamente, você entra sem digitar a senha do usuário (apenas a passphrase da chave, se definida).
Passo 4: Configurando o arquivo sshd_config
O arquivo principal de configuração do servidor SSH é /etc/ssh/sshd_config. Faça sempre um backup antes de editar:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo nano /etc/ssh/sshd_configConfigurações de segurança essenciais
| Diretiva | Valor recomendado | Por quê |
|---|---|---|
Port | 2222 (ou outra não padrão) | Reduz bots que escaneiam a porta 22 |
PermitRootLogin | no | Impede login direto como root |
PasswordAuthentication | no | Só aceita chaves SSH — elimina brute force |
PubkeyAuthentication | yes | Habilita autenticação por chave |
MaxAuthTries | 3 | Limita tentativas por conexão |
LoginGraceTime | 30 | Tempo máximo (segundos) para autenticar |
AllowUsers | seuusuario | Whitelist de usuários que podem conectar via SSH |
X11Forwarding | no | Desabilita encaminhamento gráfico se não necessário |
Após editar, aplique as alterações:
sudo systemctl restart sshPasswordAuthentication no), certifique-se de que o acesso por chave está funcionando — abra uma segunda sessão SSH para testar. Se fechar a sessão atual sem confirmar o acesso por chave, pode se trancar fora do servidor.Passo 5: Protegendo com Fail2Ban
O Fail2Ban monitora os logs do SSH e bane automaticamente IPs que tentam muitas autenticações falhas — proteção essencial contra ataques de força bruta.
sudo apt install fail2ban -yCrie um arquivo de configuração local (não edite o jail.conf diretamente):
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.localLocalize a seção [sshd] e configure:
[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600
findtime = 600Reinicie o Fail2Ban:
sudo systemctl restart fail2ban
sudo fail2ban-client status sshdPasso 6: Configurando o Firewall (UFW)
O UFW (Uncomplicated Firewall) é o gerenciador de firewall padrão do Ubuntu. Configure-o para permitir apenas a porta SSH que você definiu:
sudo ufw allow 2222/tcp
sudo ufw enable
sudo ufw statusTransferindo arquivos com SCP e SFTP
O OpenSSH não serve só para acesso remoto — ele também habilita transferência segura de arquivos:
SCP (Secure Copy)
# Enviar arquivo local para o servidor
scp -P 2222 arquivo.txt usuario@servidor:/caminho/destino/
# Baixar arquivo do servidor
scp -P 2222 usuario@servidor:/caminho/arquivo.txt ./local/SFTP
sftp -P 2222 usuario@servidorClientes gráficos como FileZilla e Cyberduck também suportam SFTP — úteis para quem prefere interface visual para transferências de arquivo.
Perguntas frequentes sobre OpenSSH no Ubuntu
Qual a diferença entre SSH, OpenSSH e SFTP?
SSH é o protocolo. OpenSSH é a implementação mais popular desse protocolo. SFTP (SSH File Transfer Protocol) é um subprotocolo que usa o canal SSH para transferência segura de arquivos — é diferente do FTP e sempre criptografado.
Como verificar quem está conectado via SSH no meu servidor?
Use o comando who ou w para ver sessões ativas. Para ver o histórico de logins: last. Para ver tentativas de acesso suspeitas: sudo grep "Failed password" /var/log/auth.log | tail -20.
Posso ter múltiplas chaves SSH para servidores diferentes?
Sim. Configure o arquivo ~/.ssh/config na sua máquina local para associar cada host à chave correspondente. Exemplo: Host meuservidor / HostName 192.168.1.10 / User ubuntu / IdentityFile ~/.ssh/chave_servidor. Assim você conecta apenas com ssh meuservidor.
O SSH tunneling é difícil de configurar?
Não. O SSH tunnel local (para acessar um serviço remoto como se fosse local) é feito com: ssh -L 8080:localhost:80 usuario@servidor. Após isso, acessar localhost:8080 na sua máquina conecta ao serviço na porta 80 do servidor — tudo criptografado pelo SSH.
Como renovar ou revogar uma chave SSH?
Para revogar: remova a chave pública correspondente do arquivo ~/.ssh/authorized_keys no servidor. Para renovar: gere um novo par de chaves, adicione a nova chave pública ao authorized_keys, teste o acesso com a nova chave e só então remova a antiga.
Conclusão
Configurar o OpenSSH corretamente no Ubuntu é uma das tarefas mais fundamentais na administração de qualquer servidor Linux. Seguindo os passos deste guia — instalação, chaves SSH, hardening do sshd_config, Fail2Ban e UFW — você transforma um servidor com acesso remoto padrão em um ambiente significativamente mais seguro. A segurança no SSH não é opcional para servidores em produção: é o mínimo esperado.
Confira mais conteúdos práticos sobre tecnologia e infraestrutura de TI no Atraca.

Comentários