Guia Completo de Configuração SSH no Ubuntu | Instalação, Reforço de Segurança 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, amplamente usado para acesso remoto a servidores, execução de comandos e transferências de arquivos.
Neste guia, abordaremos tudo, desde a instalação básica até configurações avançadas de segurança para o SSH no Ubuntu.

1.1 Por que Configurar o SSH no Ubuntu?

1.1.1 O que é SSH?

SSH (Secure Shell) é um protocolo projetado para comunicação segura em uma rede. É comumente usado para fazer login em servidores remotos, transferir arquivos e criar túneis (encaminhamento de portas). Ao contrário de protocolos tradicionais como Telnet ou FTP, o SSH criptografa toda a comunicação, tornando-a altamente segura.

1.1.2 Quando Você Precisa do SSH no Ubuntu?

O SSH é útil para gerenciamento remoto em diversos cenários, como:

  • Gerenciamento de servidores em nuvem: serviços de nuvem como AWS, GCP e Vultr utilizam SSH para acesso remoto a servidores.
  • Operações remotas em ambiente LAN: acessar servidores internos ou máquinas de desenvolvimento via SSH para trabalho remoto.
  • Gerenciamento de dispositivos IoT: controlar remotamente dispositivos embarcados como Raspberry Pi.

Por padrão, o SSH está desativado no Ubuntu. Para usá‑lo, você deve instalá‑lo e configurá‑lo manualmente.

2. Configuração Básica do SSH

Para usar o SSH no Ubuntu, você precisa instalar o servidor SSH (OpenSSH) e configurá‑lo corretamente. Esta seção cobre a instalação, configurações básicas, configuração de firewall e como conectar ao seu 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

Por padrão, o Ubuntu não vem com um servidor SSH pré‑instalado. Use o comando a seguir para instalá‑lo:

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

Esse comando atualiza a lista de pacotes e instala o servidor OpenSSH.

2.1.3 Iniciando e Habilitando o Servidor SSH

Depois de instalado, inicie o servidor SSH e habilite‑lo para iniciar na inicialização.

sudo systemctl enable --now ssh

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

2.1.4 Verificando o Status do SSH

Para verificar se o servidor SSH está em execução, use:

systemctl status ssh

Se você vir uma saída semelhante à seguinte, o SSH está funcionando corretamente:

● 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 aparecer inactive (dead) ou failed, inicie o serviço manualmente:

sudo systemctl start ssh

2.2 Configurando o Firewall (UFW)

O Ubuntu fornece o ufw (Uncomplicated Firewall) para gerenciamento simples de firewall. Você precisa configurar o UFW para permitir conexões SSH.

2.2.1 Verificando o Status do UFW

Confira o status atual do firewall usando:

sudo ufw status

Exemplo de saída (se o UFW estiver desativado):

Status: inactive

Exemplo de saída (se o UFW estiver ativado):

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

2.2.2 Permitindo Tráfego SSH

Para permitir conexões SSH na porta padrão 22, execute:

sudo ufw allow ssh

Alternativamente, especifique a porta explicitamente:

sudo ufw allow 22/tcp

2.2.3 Habilitando o UFW

Se o UFW estiver desativado, habilite‑lo com:

sudo ufw enable

Antes de habilitar o UFW, certifique‑se de que o SSH está permitido, caso contrário você pode se bloquear.

2.2.4 Verificando as Configurações do UFW

Confira se as regras do firewall foram aplicadas corretamente:

sudo ufw status verbose

Exemplo de saída:

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

Se você vir isso, o SSH está permitido através do firewall.

2.3 Conectando ao SSH

Uma vez que o servidor SSH esteja em execução, você pode conectar de um PC cliente.

2.3.1 Conectando do Linux/macOS

No Linux ou macOS, abra um terminal e execute:

ssh username@server-ip-address

Exemplo:

ssh user@192.168.1.100

Na primeira conexão, você pode ver um aviso de segurança como este:

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 e pressione Enter para prosseguir.

2.3.2 Conectando do Windows

No Windows, você pode usar **PowerShell** ou **PuTTY** para conectar via SSH. Usando PowerShell O Windows 10 e posteriores incluem um cliente SSH no PowerShell. Conecte com:

ssh username@server-ip-address

Usando PuTTY

  1. Baixe e instale o PuTTY do site oficial .
  2. Abra o PuTTY e insira o endereço IP do servidor em Host Name (or IP address) .
  3. Defina Connection type como SSH e clique em Open .
  4. Insira seu nome de usuário e senha para conectar.

3. Melhorando a Segurança do SSH

O SSH é uma ferramenta poderosa para acesso remoto, mas deixá-lo com configurações padrão pode representar riscos de segurança. Atacantes frequentemente visam servidores SSH usando ataques de força bruta ou varredura de portas. Para criar um ambiente SSH mais seguro, é essencial aplicar configurações de segurança adequadas.

3.1 Desabilitando o Login como Root

Por padrão, o Ubuntu pode permitir login como root via SSH. Como a conta root tem privilégios completos do sistema, é um alvo comum para atacantes. Desabilitar o login como root e usar uma conta de usuário regular em vez disso melhora significativamente a segurança.

3.1.1 Passos de Configuração

  1. Edite o arquivo de configuração do SSH /etc/ssh/sshd_config .
    sudo nano /etc/ssh/sshd_config
    
  1. Encontre a linha a seguir e altere para PermitRootLogin no .
    PermitRootLogin no
    
  1. Salve o arquivo e reinicie o serviço SSH.
    sudo systemctl restart ssh
    
  1. Verifique se a configuração foi aplicada.
    sudo grep PermitRootLogin /etc/ssh/sshd_config
    

Se a saída mostrar PermitRootLogin no, a configuração foi aplicada com sucesso.

3.2 Desabilitando a Autenticação por Senha e Habilitando a Autenticação por Chave Pública

Usar autenticação por chave pública é muito mais seguro do que depender de autenticação por senha. Com autenticação por chave pública, você não precisa inserir uma senha, reduzindo o risco de ataques de força bruta.

3.2.1 Gerando um Par de Chaves SSH

No seu PC local, gere um par de chaves SSH:

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

Isso criará dois arquivos:

  • Chave privada (id_rsa) → **Mantenha isso no seu PC local (nunca compartilhe publicamente)**.
  • Chave pública (id_rsa.pub) → **Copie isso para o servidor**.

3.2.2 Copiando a Chave Pública para o Servidor

Use o comando a seguir para copiar sua chave pública para o servidor:

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

3.2.3 Desabilitando a Autenticação por Senha

Edite o arquivo de configuração do SSH:

sudo nano /etc/ssh/sshd_config

Encontre a linha a seguir e altere para:

PasswordAuthentication no

Reinicie o SSH para aplicar as alterações:

sudo systemctl restart ssh

3.3 Restringindo o Acesso SSH a Usuários Específicos

Para melhorar a segurança, você pode limitar o acesso SSH a usuários específicos.

3.3.1 Passos de Configuração

  1. Abra o arquivo de configuração do SSH.
    sudo nano /etc/ssh/sshd_config
    
  1. Adicione a linha a seguir, especificando os usuários permitidos.
    AllowUsers user1 user2
    
  1. Reinicie o SSH para aplicar as alterações.
    sudo systemctl restart ssh
    

3.4 Alterando a Porta do SSH

A porta SSH padrão (22) é frequentemente visada por atacantes. Alterá-la para uma porta não padrão pode reduzir o risco de ataques automatizados.

3.4.1 Passos de Configuração

  1. Abra o arquivo de configuração do SSH.
    sudo nano /etc/ssh/sshd_config
    
  1. Encontre a linha a seguir e altere-a para uma porta personalizada (por exemplo, 2200 ).
    Port 2200
    
  1. Salve o arquivo e reinicie o SSH.
    sudo systemctl restart ssh
    

3.4.2 Atualizando Configurações do Firewall

Depois de mudar a porta SSH, permita a nova porta através do UFW:

sudo ufw allow 2200/tcp

Verifique as configurações:

sudo ufw status

3.5 Prevenindo Ataques de Força Bruta com Fail2Ban

Fail2Ban é uma ferramenta que detecta tentativas de login SSH falhas e bloqueia temporariamente o endereço IP atacante.

3.5.1 Instalando o Fail2Ban

sudo apt install fail2ban -y

3.5.2 Criando um Arquivo de Configuração

Copie o arquivo de configuração padrão:

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

Edite o arquivo de configuração:

sudo nano /etc/fail2ban/jail.local

Modifique a seção SSH da seguinte forma:

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

3.5.3 Reiniciando o Fail2Ban

Reinicie o Fail2Ban para aplicar as alterações:

sudo systemctl restart fail2ban

3.5.4 Verificando a Lista de Banimentos

Para verificar quais IPs estão banidos:

sudo fail2ban-client status sshd

Resumo

Nesta seção, cobrimos aprimoramentos essenciais de segurança SSH, incluindo:

  • Desativar login como root
  • Desativar autenticação por senha e habilitar autenticação por chave pública
  • Restringir o acesso SSH a usuários específicos
  • Alterar a porta SSH
  • Usar o Fail2Ban para bloquear ataques de força bruta

Ao implementar essas medidas, você pode criar um ambiente SSH mais seguro.

4. Configuração Avançada de SSH

Depois de configurar a segurança do SSH, você pode aproveitar configurações avançadas para melhorar a usabilidade e a segurança. Esta seção cobre o gerenciamento do ssh.socket no Ubuntu 22.10 e posteriores, tunelamento SSH (encaminhamento de portas), configuração de múltiplas portas SSH e restrição de acesso SSH a endereços IP específicos.

4.1 Usando ssh.socket no Ubuntu 22.10 e Posteriores

A partir do Ubuntu 22.10, o gerenciamento do serviço SSH pode mudar de ssh.service para ssh.socket. Isso permite que o SSH inicie dinamicamente quando uma solicitação de conexão é recebida, reduzindo o uso de recursos.

4.1.1 Verificando o Status do ssh.socket

Para verificar se o ssh.socket está habilitado, execute:

sudo systemctl status ssh.socket

Exemplo de saída (se habilitado):

● 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 Habilitando ou Desabilitando o ssh.socket

Se o ssh.socket estiver desabilitado, habilite-o com:

sudo systemctl enable --now ssh.socket

Para voltar ao ssh.service tradicional, desabilite o ssh.socket e habilite o ssh.service em vez disso:

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

4.2 Tunelamento SSH (Encaminhamento de Portas)

O tunelamento SSH permite a transmissão segura de dados entre um servidor remoto e um PC local, contornando redes externas.

4.2.1 Encaminhamento de Porta Local

Útil para acessar bancos de dados remotos ou servidores web com segurança.
Exemplo: Conectando a um servidor MySQL remoto (porta 3306) a partir do seu PC local

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

4.2.2 Encaminhamento de Porta Remota

Expõe um serviço local a um servidor remoto através do SSH.
Exemplo: Encaminhando um servidor web local (porta 80) para a porta 8080 em um servidor remoto

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

4.2.3 Encaminhamento de Porta Dinâmica

Transforma o SSH em um proxy SOCKS para navegação anônima na web.
Exemplo: Criando um proxy SOCKS na porta local 1080

ssh -D 1080 username@server-ip-address

4.3 Ouvindo em Múltiplas Portas SSH

Por padrão, o SSH escuta em uma porta (porta 22). Configurar múltiplas portas permite flexibilidade de acesso.

4.3.1 Etapas de Configuração

  1. Edite o arquivo de configuração do SSH.
    sudo nano /etc/ssh/sshd_config
    
  1. Adicione várias entradas de porta.
    Port 22
    Port 2200
    
  1. Reinicie o SSH.
    sudo systemctl restart ssh
    
  1. Permita a nova porta no firewall.
    sudo ufw allow 2200/tcp
    

4.4 Restringindo o Acesso SSH a Endereços IP Específicos

Para melhorar a segurança, você pode limitar o acesso SSH a endereços IP específicos.

4.4.1 Configurando /etc/hosts.allow

Permita o acesso SSH apenas de determinados endereços IP editando:

sudo nano /etc/hosts.allow

Adicione a linha a seguir (substitua 192.168.1.100 pelo endereço IP permitido):

sshd: 192.168.1.100

4.4.2 Configurando /etc/hosts.deny

Para bloquear todos os outros IPs por padrão:

sudo nano /etc/hosts.deny
sshd: ALL

Isso garante que apenas os IPs listados em hosts.allow possam acessar o SSH.

Resumo

Esta seção abordou configurações avançadas de SSH, incluindo:

  • Gerenciamento do ssh.socket no Ubuntu 22.10 e posteriores
  • Uso de tunelamento SSH (encaminhamento de portas) para conexões seguras
  • Escuta em múltiplas portas SSH
  • Restrição do acesso SSH a IPs específicos

Aplicar essas configurações melhora a segurança e a usabilidade do SSH.

5. Solucionando Problemas de SSH

Mesmo com a configuração correta, podem surgir problemas de SSH. Esta seção oferece soluções para problemas comuns de SSH.

5.1 Não é Possível Conectar ao SSH

Se você receber um erro Connection refused ou de tempo limite, verifique o seguinte.

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

Verifique o status do serviço SSH:

sudo systemctl status ssh

Solução:

  • Se Active: inactive (dead) ou failed, reinicie o SSH.
    sudo systemctl restart ssh
    
  • Habilite o SSH para iniciar automaticamente.
    sudo systemctl enable ssh
    

5.1.2 O Firewall Está Bloqueando o SSH

Certifique-se de que o SSH está permitido no UFW:

sudo ufw status

Solução: Se o SSH não estiver permitido:

sudo ufw allow 22/tcp

Se estiver usando uma porta personalizada:

sudo ufw allow 2200/tcp

5.2 Erros de Autenticação

Se o SSH rejeitar tentativas de login, verifique o seguinte:

5.2.1 Nome de Usuário ou Senha Incorretos

Garanta que está usando o nome de usuário correto:

ssh username@server-ip-address

5.2.2 Problemas com Autenticação por Chave Pública

Verifique se sua chave pública está corretamente armazenada em ~/.ssh/authorized_keys.

cat ~/.ssh/authorized_keys

5.2.3 Permissões Incorretas

Assegure que o diretório e os arquivos do SSH tenham as permissões corretas:

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

Resumo

Esta seção abordou problemas comuns de SSH e suas soluções, incluindo:

  • Verificar se o SSH está em execução
  • Garantir que o firewall não esteja bloqueando o SSH
  • Corrigir problemas de autenticação

Use estas etapas de solução de problemas para resolver rapidamente problemas de conexão SSH.

6. FAQ (Perguntas Frequentes)

Esta seção trata de perguntas comuns relacionadas ao SSH e oferece soluções para melhorar sua experiência com SSH mantendo a segurança.

6.1 Como Evitar Timeouts no SSH?

Se as conexões SSH se desconectarem após um período de inatividade, tente as seguintes configurações.

6.1.1 Configuração no Lado do Servidor

Edite /etc/ssh/sshd_config e adicione:

ClientAliveInterval 60
ClientAliveCountMax 3

Reinicie o SSH para aplicar as alterações:

sudo systemctl restart ssh

6.1.2 Configuração no Lado do Cliente

Modifique o arquivo de configuração SSH local ~/.ssh/config:

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

6.2 O Que Fazer Se Eu Esquecer Minha Senha SSH?

6.2.1 Se Você Tiver Acesso Físico ao Servidor

  1. Inicie o modo de recuperação via menu GRUB.
  2. Redefina a senha com o seguinte comando:
    passwd username
    
  1. Reinicie o sistema.

6.2.2 Se Você Não Puder Acessar o Servidor Fisicamente (por exemplo, VPS na Nuvem)

  • Use o recurso de console do provedor de nuvem para acessar o servidor.
  • Configure a autenticação por chave SSH em vez de depender de senhas.

6.3 Como Usar SSH no Windows?

6.3.1 Usando o PowerShell

O Windows 10 e versões posteriores incluem um cliente SSH integrado. Abra o PowerShell e execute:

ssh username@server-ip-address

6.3.2 Usando o PuTTY

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

6.4 Como Configurar SSH no Ubuntu WSL (Subsistema do Windows para Linux)?

Para habilitar o SSH no WSL, siga estas etapas.

6.4.1 Instalando o Servidor SSH

sudo apt update && sudo apt install openssh-server

6.4.2 Configurando o SSH

Edite /etc/ssh/sshd_config e habilite a autenticação por senha:

PasswordAuthentication yes

Como o WSL não usa systemd por padrão, inicie o SSH manualmente:

sudo service ssh start

6.5 Quais Medidas de Segurança Adicionais Devo Tomar?

6.5.1 Instalando o Fail2Ban

Previna ataques de força bruta instalando o Fail2Ban:

sudo apt install fail2ban -y

Edite o arquivo de configuração /etc/fail2ban/jail.local:

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

Reinicie o Fail2Ban:

sudo systemctl restart fail2ban

6.5.2 Alterando a Porta do SSH

Modifique /etc/ssh/sshd_config para alterar a porta padrão do SSH:

Port 2200

Reinicie o SSH e atualize as configurações do firewall:

sudo ufw allow 2200/tcp

6.6 Como Monitorar os Logs do SSH em Tempo Real?

Para visualizar os logs do SSH em tempo real, use:

sudo journalctl -u ssh -f

Para verificar logs anteriores:

sudo cat /var/log/auth.log | grep ssh

6.7 Como Tornar o SSH Mais Conveniente?

6.7.1 Usando .ssh/config para Login Fácil

Salve conexões SSH usadas com frequência em ~/.ssh/config:

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

Agora você pode conectar com:

ssh myserver

6.7.2 Usando ssh-agent para Evitar a Entrada Repetida de Senha

Execute:

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

Isso permite conexões SSH sem digitar a frase secreta toda vez.

Resumo

Esta seção forneceu respostas às perguntas comuns relacionadas ao SSH, abordando:

  • Prevenindo timeouts de SSH
  • Recuperando de uma senha esquecida
  • Usando SSH no Windows e WSL
  • Aplicando medidas de segurança adicionais
  • Monitorando logs de SSH
  • Tornando o uso do SSH mais conveniente

Seguindo estas dicas, você pode criar um ambiente SSH seguro e eficiente para gerenciamento remoto de servidores.

Artigos Relacionados

Related

1. Introdução Ao usar SSH no Ubuntu, você pode acessar e gerenciar seu servidor ou PC remotamente de forma segura. Este […]