Guia Completo de Configuração do SSH no Ubuntu: Instalação, Reforço de Segurança, Configuração Avançada e Solução de Problemas

目次

1. Introdução

Configurar o SSH no Ubuntu é essencial para gerenciar servidores remotos. SSH (Secure Shell) é um protocolo que fornece comunicação criptografada segura, permitindo que os usuários acessem servidores remotamente, executem comandos e transfiram arquivos.

Este artigo explica como configurar o SSH no Ubuntu, desde as etapas básicas de instalação até medidas avançadas de segurança.

1.1 Por que Configurar o SSH no Ubuntu?

1.1.1 O que é SSH?

SSH (Secure Shell) é um protocolo que permite comunicação segura sobre uma rede. É comumente usado para fazer login em servidores remotos, transferir arquivos e fazer tunelamento (encaminhamento de portas). Ao contrário do Telnet ou FTP tradicionais, o SSH criptografa toda a comunicação, proporcionando forte segurança.

1.1.2 Quando o SSH é Necessário no Ubuntu

Cenários comuns nos quais o SSH é usado para gerenciar o Ubuntu remotamente incluem:

  • Administração de servidores em nuvem : servidores Linux na AWS, GCP, Vultr e outros são tipicamente acessados via SSH.
  • Operações remotas em ambientes LAN : acesso a servidores internos ou máquinas de desenvolvimento remotamente.
  • Gerenciamento de dispositivos IoT : controle de sistemas embarcados como Raspberry Pi remotamente.

Por padrão, o servidor SSH está desativado no Ubuntu, portanto ele deve ser instalado e configurado manualmente para habilitar o acesso SSH.

2. Configuração Básica do SSH

Para usar o SSH no Ubuntu, você deve instalar o servidor SSH (OpenSSH) e configurá‑lo corretamente. Esta seção explica como instalar o SSH, ajustar configurações básicas, configurar o firewall e conectar ao servidor.

2.1 Instalando e Iniciando o OpenSSH

2.1.1 O que é OpenSSH?

OpenSSH (Open Secure Shell) é uma implementação de código aberto do protocolo SSH. Ele suporta conexões remotas, transferências seguras de arquivos (SCP e SFTP) e encaminhamento de portas.

2.1.2 Instalando o OpenSSH

O Ubuntu não inclui um servidor SSH por padrão, então instale‑o usando o comando abaixo:

sudo apt update && sudo apt install -y openssh-server

Isso atualiza as listas de pacotes e instala o servidor OpenSSH.

2.1.3 Iniciando o SSH e Habilitando a Inicialização Automática

Após a instalação, inicie o servidor SSH e habilite a inicialização automática:

sudo systemctl enable --now ssh

A opção enable garante que o SSH seja iniciado automaticamente quando o sistema operacional for inicializado.

2.1.4 Verificando o Status do SSH

Verifique se o SSH está em execução:

systemctl status ssh

Se a saída mostrar active (running), o SSH está funcionando normalmente:

● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2025-02-28 12:00:00 UTC; 5min ago

Se mostrar inactive (dead) ou failed, inicie o SSH manualmente:

sudo systemctl start ssh

2.2 Configurando o Firewall (UFW)

O Ubuntu inclui um firewall simples chamado ufw (Uncomplicated Firewall). Você deve permitir conexões SSH através dele.

2.2.1 Verificando o Status do UFW

sudo ufw status

Exemplo de saída (inactive):

Status: inactive

Exemplo de saída (active):

Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere

2.2.2 Permitindo SSH

sudo ufw allow ssh

Ou explicitamente:

sudo ufw allow 22/tcp

2.2.3 Habilitando o UFW

sudo ufw enable

2.2.4 Verificando as Regras do UFW

sudo ufw status verbose

Exemplo:

Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)

2.3 Métodos Básicos de Conexão SSH

Uma vez que o SSH esteja em execução, conecte‑se a partir de uma máquina cliente.

2.3.1 Conectando a partir de Linux/macOS

ssh username@server-ip-address

Exemplo:

ssh user@192.168.1.100

Você pode ver um aviso de segurança na primeira conexão:

The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)?

Digite yes para prosseguir.

2.3.2 Conectando a partir do Windows

Você pode usar PowerShell ou PuTTY.

Usando PowerShell (Windows 10+ inclui SSH):

ssh username@server-ip-address

Usando PuTTY:

  1. Baixe o PuTTY do site oficial
  2. Abra o PuTTY e insira o IP do servidor em Host Name (or IP address)
  3. Selecione SSH como tipo de conexão
  4. Clique em Open e faça login

Conclusão

Esta seção abordou o básico de configuração do SSH no Ubuntu:

  • Como instalar e iniciar o OpenSSH
  • Como permitir conexões SSH com o UFW
  • Como conectar a partir do Linux/macOS e Windows

3. Reforçando a Segurança do SSH

O SSH é poderoso, mas deixá-lo com as configurações padrão aumenta os riscos de segurança. Os invasores frequentemente tentam ataques de força bruta ou varreduras de portas. Reforçar a segurança do SSH é essencial.

3.1 Desativar Login como Root

O login como root fornece controle total do sistema e é um alvo principal para invasores. Desativá-lo melhora a segurança.

3.1.1 Passos

  1. Edite o arquivo de configuração do SSH:
    sudo nano /etc/ssh/sshd_config
    
  1. Altere a linha para:
    PermitRootLogin no
    
  1. Reinicie o SSH:
    sudo systemctl restart ssh
    
  1. Confirme a alteração:
    sudo grep PermitRootLogin /etc/ssh/sshd_config
    

Se a saída for PermitRootLogin no, a configuração foi aplicada.

3.2 Desativar Autenticação por Senha e Usar Autenticação por Chave

A autenticação por chave pública é mais segura que senhas e reduz o risco de ataques de força bruta.

3.2.1 Criando Chaves SSH

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa

Isso gera dois arquivos:

  • id_rsa (chave privada) — mantenha localmente, nunca compartilhe
  • id_rsa.pub (chave pública) — envie para o servidor

3.2.2 Enviando a Chave Pública

ssh-copy-id username@server-ip-address

3.2.3 Desativando Autenticação por Senha

sudo nano /etc/ssh/sshd_config

Edite:

PasswordAuthentication no

Reinicie o SSH:

sudo systemctl restart ssh

3.3 Permitir Acesso SSH Apenas a Usuários Específicos

Para melhorar a segurança do SSH, você pode restringir o acesso para que apenas determinados usuários possam fazer login.

3.3.1 Etapas de Configuração

  1. Abra o arquivo de configuração do SSH /etc/ssh/sshd_config :
    sudo nano /etc/ssh/sshd_config
    
  1. Adicione os usuários permitidos a acessar via SSH:
    AllowUsers username1 username2
    
  1. Reinicie o SSH para aplicar as configurações:
    sudo systemctl restart ssh
    

3.4 Alterando a Porta do SSH

Como a porta 22 é frequentemente alvo de invasores, mudar a porta padrão pode melhorar a segurança.

3.4.1 Etapas de Configuração

  1. Abra o arquivo de configuração do SSH:
    sudo nano /etc/ssh/sshd_config
    
  1. Modifique a configuração da porta, por exemplo:
    Port 2200
    
  1. Reinicie o SSH:
    sudo systemctl restart ssh
    

3.4.2 Atualizando as Configurações do Firewall

Se você mudar a porta, atualize o UFW:

sudo ufw allow 2200/tcp

Verifique a nova regra:

sudo ufw status

3.5 Prevenir Ataques de Força Bruta com Fail2Ban

O Fail2Ban detecta tentativas de login falhadas e bloqueia o IP atacante por um período especificado.

3.5.1 Instalar o Fail2Ban

sudo apt install fail2ban -y

3.5.2 Criar um Arquivo de Configuração

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Abra o arquivo:

sudo nano /etc/fail2ban/jail.local

Modifique as configurações:

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

3.5.3 Reiniciar o Fail2Ban

sudo systemctl restart fail2ban

3.5.4 Verificar Lista de Banimentos

sudo fail2ban-client status sshd

Conclusão

Esta seção explicou métodos para melhorar a segurança do SSH:

  • Desativar login root
  • Desativar autenticação por senha e habilitar autenticação por chave
  • Restringir o acesso SSH a usuários específicos
  • Alterar a porta SSH
  • Usar Fail2Ban para bloquear tentativas não autorizadas

Implementar essas configurações ajuda a criar um ambiente SSH seguro.

4. Configuração Avançada do SSH

Depois que a configuração básica do SSH e o endurecimento de segurança forem concluídos, você pode avançar para recursos avançados que aumentam a flexibilidade e a segurança. Esta seção aborda o gerenciamento de ssh.socket (Ubuntu 22.10+), túneis SSH, escuta em múltiplas portas e controle de acesso baseado em IP.

4.1 Usando ssh.socket no Ubuntu 22.10+

No Ubuntu 22.10+, o SSH pode ser gerenciado por ssh.socket em vez de ssh.service. Essa ativação baseada em socket inicia o SSH somente quando necessário, economizando recursos do sistema.

4.1.1 Verificar o Status do ssh.socket

sudo systemctl status ssh.socket

Exemplo de saída (ativado):

● ssh.socket - OpenSSH Server Socket
   Loaded: loaded (/lib/systemd/system/ssh.socket; enabled; vendor preset: enabled)
   Active: active (listening) since Fri 2025-02-28 12:00:00 UTC

4.1.2 Habilitar ou Desabilitar o ssh.socket

Ativar o socket:

sudo systemctl enable --now ssh.socket

Voltar ao ssh.service clássico:

sudo systemctl disable --now ssh.socket
sudo systemctl enable --now ssh.service

4.2 Tunelamento SSH (Encaminhamento de Portas)

O tunelamento SSH estabelece canais de comunicação seguros entre sistemas locais e remotos.

4.2.1 Encaminhamento de Porta Local

Útil para conectar de forma segura a bancos de dados remotos ou serviços internos.

Exemplo: Acessar um servidor MySQL remoto na porta 3306

ssh -L 3306:localhost:3306 username@server-ip-address

4.2.2 Encaminhamento de Porta Reverso

Expor serviços locais por meio de um servidor remoto.

Exemplo: Publicar servidor web local na porta remota 8080

ssh -R 8080:localhost:80 username@server-ip-address

4.2.3 Encaminhamento de Porta Dinâmico (Proxy SOCKS)

Usar o SSH como proxy SOCKS para navegação anônima.

ssh -D 1080 username@server-ip-address

4.3 Escuta em Múltiplas Portas

O SSH pode escutar em mais de uma porta, oferecendo flexibilidade em diferentes ambientes de rede.

4.3.1 Etapas de Configuração

  1. Edite /etc/ssh/sshd_config :
    sudo nano /etc/ssh/sshd_config
    
  1. Adicione várias linhas Port:
    Port 22
    Port 2200
    
  1. Reinicie o SSH:
    sudo systemctl restart ssh
    
  1. Permita a nova porta com o UFW:
    sudo ufw allow 2200/tcp
    

4.4 Permitir SSH Apenas de Endereços IP Específicos

Restringir o acesso SSH por endereço IP oferece um controle de segurança robusto.

4.4.1 Configurar /etc/hosts.allow

sudo nano /etc/hosts.allow

Adicione um endereço IP permitido:

sshd: 192.168.1.100

4.4.2 Configurar /etc/hosts.deny

sudo nano /etc/hosts.deny

Negar todos os demais:

sshd: ALL

Conclusão

Esta seção abordou tópicos avançados de configuração do SSH:

  • Gerenciamento do ssh.socket no Ubuntu 22.10+
  • Uso de túneis SSH (encaminhamento de portas)
  • Escuta em múltiplas portas SSH
  • Restrição de acesso SSH a endereços IP específicos

Aplicar essas configurações melhora tanto a segurança quanto a usabilidade.

5. Solução de Problemas do SSH

Mesmo com a configuração correta, conexões SSH podem falhar ocasionalmente. Esta seção explica problemas comuns do SSH e suas soluções.

5.1 Quando o SSH Não Consegue Conectar

Se o SSH retornar Connection refused ou expirar, as causas possíveis incluem problemas no serviço, porta configurada incorretamente ou restrições de firewall.

5.1.1 Serviço SSH Não Está em Execução

sudo systemctl status ssh

Solução:

  • Se inactive ou failed, reinicie o SSH:
    sudo systemctl restart ssh
    
  • Habilite a inicialização automática:
    sudo systemctl enable ssh
    

5.1.2 Porta SSH Não Está Aberta

ssh -p 2200 username@server-ip-address

Verifique as portas abertas:

sudo netstat -tulnp | grep ssh

Or:

ss -tulnp | grep ssh

5.1.3 Firewall (UFW) Bloqueando SSH

sudo ufw status

Permitir SSH:

sudo ufw allow 22/tcp

Se estiver usando uma porta personalizada:

sudo ufw allow 2200/tcp

5.2 Erros de Autenticação

5.2.1 Nome de usuário ou senha incorretos

ssh username@server-ip-address

5.2.2 Chave pública não instalada corretamente

cat ~/.ssh/authorized_keys

Verifique se corresponde ao id_rsa.pub local.

5.2.3 Permissões incorretas no diretório .ssh

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Também assegure:

chmod 755 /home/username

5.3 Conexões SSH instáveis ou desconexões inesperadas

5.3.1 Ajustar ClientAliveInterval

ClientAliveInterval 60
ClientAliveCountMax 3
sudo systemctl restart ssh

5.3.2 Ajustar configurações do cliente local

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

5.4 Visualizando logs SSH

5.4.1 Visualizar logs em tempo real

sudo journalctl -u ssh -f

5.4.2 Visualizar logs antigos

sudo cat /var/log/auth.log | grep ssh
sudo grep "Failed password" /var/log/auth.log

Conclusão

Esta seção explicou problemas comuns de SSH e como resolvê-los:

  • Verifique se o serviço SSH está em execução
  • Verifique portas abertas
  • Verifique as configurações do firewall
  • Garanta a autenticação correta por chave
  • Corrija problemas de timeout e desconexão
  • Analise os logs de SSH

A maioria dos problemas de SSH origina-se de má configuração ou restrições de rede. Use estas etapas de solução de problemas para resolver os problemas de forma eficiente.

6. FAQ (Perguntas Frequentes)

Esta seção responde a perguntas comuns relacionadas ao uso e configuração do SSH.

6.1 Como corrigir problemas de timeout do SSH?

6.1.1 Configurações do lado do servidor

ClientAliveInterval 60
ClientAliveCountMax 3
sudo systemctl restart ssh

6.1.2 Configurações do lado do cliente

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

6.2 O que fazer se você esquecer sua senha SSH?

6.2.1 Se você tem acesso físico

  1. Inicialize em modo de usuário único (selecione recovery mode no GRUB)
  2. Redefina a senha:
    passwd username
    
  1. Reinicie o sistema

6.2.2 Se o acesso físico não for possível (VPS na nuvem)

  • Use o console VPS fornecido pelo serviço de hospedagem
  • Use a autenticação por chave pública

6.3 Como usar SSH no Windows?

6.3.1 Usando PowerShell

ssh username@server-ip-address

6.3.2 Usando PuTTY

  1. Baixe e instale PuTTY
  2. Insira o endereço IP do servidor em Host Name
  3. Selecione SSH como tipo de conexão
  4. Faça login com nome de usuário e senha

6.4 Como configurar SSH no Ubuntu WSL?

6.4.1 Instalar o servidor SSH

sudo apt update && sudo apt install openssh-server

6.4.2 Modificar as configurações do SSH

PasswordAuthentication yes

Inicie o SSH manualmente (WSL não usa systemd):

sudo service ssh start

6.5 Práticas recomendadas de segurança adicionais

6.5.1 Use o Fail2Ban

sudo apt install fail2ban -y
[sshd]
enabled = true
port = 22
maxretry = 3
findtime = 600
bantime = 3600
sudo systemctl restart fail2ban

6.5.2 Alterar a porta SSH

Port 2200
sudo ufw allow 2200/tcp

6.6 Como monitorar logs SSH em tempo real?

sudo journalctl -u ssh -f
sudo cat /var/log/auth.log | grep ssh

6.7 Dicas para usar SSH de forma mais conveniente

6.7.1 Use .ssh/config para logins simples

Host myserver
    HostName 192.168.1.100
    User user
    Port 2200
    IdentityFile ~/.ssh/id_rsa

Então conecte com:

ssh myserver

6.7.2 Use ssh-agent

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

Conclusão

Esta seção resumiu as perguntas frequentes relacionadas ao SSH:

  • Como corrigir problemas de tempo limite do SSH
  • Como recuperar uma senha esquecida
  • Como usar o SSH no Windows e WSL
  • Melhores práticas de segurança
  • Como verificar os logs do SSH
  • Dicas para tornar o SSH mais conveniente usando .ssh/config

Ao aplicar essas técnicas, você pode construir um ambiente SSH seguro e eficiente e gerenciar servidores remotos de forma tranquila.

年収訴求