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.

OpenSSH no Ubuntu em 30 segundos (resumo rápido)

  • 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 -y

Verifique se o serviço está ativo:

sudo systemctl status ssh

Você deve ver Active: active (running). Para habilitá-lo para iniciar automaticamente com o sistema:

sudo systemctl enable ssh

Passo 2: Conectando ao servidor por SSH

De outra máquina (ou da própria, para teste), conecte com:

ssh usuario@ip-do-servidor

Para especificar uma porta diferente da padrão (22):

ssh -p 2222 usuario@ip-do-servidor

Na 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-servidor

Ou 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-servidor

Se 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_config

Configurações de segurança essenciais

DiretivaValor recomendadoPor quê
Port2222 (ou outra não padrão)Reduz bots que escaneiam a porta 22
PermitRootLoginnoImpede login direto como root
PasswordAuthenticationnoSó aceita chaves SSH — elimina brute force
PubkeyAuthenticationyesHabilita autenticação por chave
MaxAuthTries3Limita tentativas por conexão
LoginGraceTime30Tempo máximo (segundos) para autenticar
AllowUsersseuusuarioWhitelist de usuários que podem conectar via SSH
X11ForwardingnoDesabilita encaminhamento gráfico se não necessário

Após editar, aplique as alterações:

sudo systemctl restart ssh
Atenção: antes de desabilitar a autenticação por senha (PasswordAuthentication 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 -y

Crie 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.local

Localize a seção [sshd] e configure:

[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600
findtime = 600

Reinicie o Fail2Ban:

sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

Passo 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 status
Se você mudou a porta padrão: lembre-se de liberar a nova porta no firewall ANTES de reiniciar o SSH e antes de fechar a sessão atual. Também verifique se o seu provedor de VPS tem um firewall externo (Security Groups na AWS, por exemplo) que também precisa ser atualizado.

Transferindo 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@servidor

Clientes 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.