Como instalar e configurar SSH no Ubuntu com segurança
Aprende a instalar o OpenSSH no Ubuntu, gerar chaves Ed25519, desativar o acesso root e proteger o teu servidor contra ataques automáticos.

Nesta página
O SSH é o canal encriptado através do qual administras um computador Linux à distância: terminal, transferência de ficheiros, túnel para outros serviços. No Ubuntu Desktop o servidor SSH não vem instalado por defeito, enquanto nas imagens para servidores normalmente já está presente. Neste guia, vais instalá-lo, ligá-lo a partir do teu computador com uma chave e torná-lo seguro.
Instalação #
sudo apt update
sudo apt install openssh-server
O serviço arranca sozinho. Verifica o estado:
sudo systemctl status ssh

No Ubuntu 24.04 não te assustes se, antes da primeira ligação, o estado aparecer como inactive com a linha TriggeredBy: ssh.socket: a partir do Ubuntu 22.10, o SSH é iniciado pelo socket ao primeiro intento de ligação, e sudo systemctl status ssh.socket deve constar como ativo. Para desligar totalmente o acesso remoto, por exemplo durante uma manutenção, usa sudo systemctl disable --now ssh.socket ssh.
Se o firewall UFW estiver ativo, autoriza o SSH antes de fechares a sessão em que estás a trabalhar:
sudo ufw allow OpenSSH
sudo ufw enable
De outro computador, ligas-te com:
ssh nomeutente@indirizzo-ip
O comando funciona da mesma forma no Linux, macOS e Windows 10 e 11, que já têm o cliente SSH instalado: basta abrir o Terminal do Windows ou PowerShell. Na primeira ligação, será solicitado que confirmes a impressão digital (fingerprint) do servidor: escreve yes.
As chaves: como funcionam #
Um par de chaves tem uma parte privada, que fica no teu computador e não deve ser dada a ninguém, e uma parte pública, que copias para o servidor. Quando te ligas, o servidor verifica se tens a chave privada correta, sem que nada de secreto passe pela rede.
É mais seguro do que uma palavra-passe porque uma chave não se adivinha: os ataques de força bruta, que tentam milhões de combinações, não servem para nada.
Gerar o par de chaves #
No teu computador, não no servidor:
ssh-keygen -t ed25519 -C "il-mio-portatile"

Ed25519 é o algoritmo recomendado hoje em dia: chaves curtas, verificação rápida, segurança elevada. Usa RSA apenas se precisares de te ligar a sistemas antigos que não reconheçam Ed25519 e, nesse caso, com pelo menos 4096 bits.
Quando te pedir uma frase de acesso (passphrase), coloca-a: protege a chave se alguém meter as mãos no teu computador. Para não teres de a escrever sempre, o agente SSH trata disso, lembrando-a até ao fim da sessão.
Copiar a chave pública para o servidor #
ssh-copy-id nomeutente@indirizzo-ip
Pede a palavra-passe apenas uma vez e configura as permissões corretas. No Windows ssh-copy-id não existe: abre o ficheiro C:\Users\<nome>\.ssh\id_ed25519.pub, copia o seu conteúdo e cola-o no fim do ficheiro ~/.ssh/authorized_keys no servidor.
Testa imediatamente a ligação com a chave numa segunda janela, mantendo a primeira aberta. Só quando funcionar é que passas para bloquear as palavras-passe.
Tornar a configuração segura #
As definições do servidor ficam em /etc/ssh/sshd_config. Nas versões recentes do Ubuntu é melhor não mexer nesse ficheiro e criar, em vez disso, um ficheiro próprio dentro de /etc/ssh/sshd_config.d/, que será lido adicionalmente:
sudo nano /etc/ssh/sshd_config.d/99-sicurezza.conf
Conteúdo recomendado:
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
X11Forwarding no
MaxAuthTries 3
O que faz cada linha:
| Definição | Efeito |
|---|---|
PermitRootLogin no | Ninguém pode entrar diretamente como root: entras com o teu utilizador e usas sudo |
PasswordAuthentication no | Só se entra com as chaves, as palavras-passe são rejeitadas |
KbdInteractiveAuthentication no | Fecha outra via que reabriria o acesso por palavra-passe |
MaxAuthTries 3 | Limita as tentativas para cada ligação |
X11Forwarding no | Desativa o encaminhamento de interface gráfica, que quase ninguém utiliza |
Antes de aplicar, verifica se a sintaxe está correta:
sudo sshd -t
Se não imprimir nada, está tudo em ordem e podes recarregar o serviço:
sudo systemctl reload ssh
Defender-se de ataques automáticos #
Alterar a porta de 22 para um número alto não torna o servidor mais seguro, mas reduz imenso o ruído nos logs, porque quase todas as varreduras automáticas tentam apenas a porta padrão. Configura-se com Port 2222 no teu ficheiro de configuração, lembrando-te de abrir a nova porta no firewall (sudo ufw allow 2222/tcp). A partir do Ubuntu 22.10 inclusive, incluindo o 24.04, após a modificação também são necessários sudo systemctl daemon-reload e sudo systemctl restart ssh.socket, caso contrário o servidor continuará a ouvir na porta 22.
Fail2ban bloqueia por algum tempo os endereços que erram várias vezes consecutivas:
sudo apt install fail2ban
Com a configuração predefinida já protege o SSH. Podes ver os endereços bloqueados com sudo fail2ban-client status sshd.
Limitar os utilizadores que podem entrar é simples e eficaz: com AllowUsers nomeutente na configuração, nenhum outro utilizador pode ligar-se, mesmo com credenciais válidas.
O ficheiro de configuração do cliente #
No computador de onde te ligas, o ficheiro ~/.ssh/config evita que tenhas de memorizar endereços e portas:
Host server-casa
HostName 192.168.1.50
User alessandro
Port 2222
IdentityFile ~/.ssh/id_ed25519
A partir desse altura, basta usares o ssh server-casa. O nome também funciona com scp e rsync.
Transferir ficheiros #
scp documento.pdf server-casa:/home/alessandro/
Para pastas inteiras e cópias que repetes frequentemente, usa o rsync, que transfere apenas o que foi alterado:
rsync -avz --progress cartella/ server-casa:/percorso/di/destinazione/
Se preferires um programa com interface gráfica, o FileZilla e o WinSCP ligam-se via SFTP usando as mesmas credenciais e a mesma chave.
Perguntas frequentes #
Se desativar as passwords e perder a chave privada, fico de fora? #
Sim, e esse é um risco que deves gerir antecipadamente. Duas precauções: adiciona ao servidor as chaves públicas de todos os dispositivos a partir dos quais te vais ligar, e guarda uma cópia da chave privada num local seguro, por exemplo, no teu gestor de passwords. Se o servidor for uma máquina virtual num provider, normalmente também existe um console de emergência no painel web.
Ed25519 ou RSA? #
Ed25519 sempre que puderes: é mais moderno, as chaves são mais curtas e a verificação é mais rápida. RSA a 4096 bits apenas para sistemas antigos que não suportem Ed25519.
Mudar a porta serve de alguma coisa? #
Não aumenta a segurança, porque um scan direcionado acaba por encontrar o serviço de qualquer forma. No entanto, reduz drasticamente as tentativas automáticas e torna os logs mais legíveis: quando aparece uma tentativa, sabes que merece atenção.
Como me ligo se o endereço IP de casa mudar? #
Com um serviço de DNS dinâmico, que associa um nome fixo ao teu endereço e o atualiza automaticamente quando este muda. Muitos routers já suportam isto nas definições. Em alternativa, uma VPN como a Tailscale permite-te aceder ao servidor sem precisares de abrir portas no router.
O que significa o aviso de que a chave do host mudou? #
Significa que a identidade do servidor não corresponde àquela que foi guardada na primeira ligação. Pode ser normal, se tiveres reinstalado o sistema ou mudado de máquina, ou pode ser um sinal de alguém a tentar intercetar a ligação. Antes de continuares, tenta perceber o motivo; só depois removes a entrada antiga com ssh-keygen -R indirizzo-ip.

