Guia Definitivo de Configuração SSH para Ubuntu: Acesso Remoto Seguro, Configuração e Solução de Problemas

目次

1. Introdução

Ao usar SSH no Ubuntu, você pode acessar e operar servidores ou PCs remotamente de forma segura. Este artigo fornece uma explicação detalhada do SSH — desde seus conceitos básicos e como instalar um servidor SSH no Ubuntu, até as melhores práticas de segurança e solução de problemas — usando explicações claras adequadas mesmo para iniciantes.

O que é SSH?

SSH (Secure Shell) é um protocolo que permite conexões remotas seguras a computadores através de uma rede. Diferente de protocolos tradicionais como Telnet ou FTP, o SSH criptografa os dados de comunicação, reduzindo significativamente o risco de escuta e adulteração.

Principais Casos de Uso do SSH no Ubuntu

Os principais cenários em que o SSH é usado no Ubuntu incluem os seguintes:

  • Gerenciamento Remoto de Servidor : Operar servidores Ubuntu de locais remotos
  • Transferência de Arquivos : Trocar arquivos de forma segura usando SCP ou SFTP
  • Redirecionamento de Porta : Estabelecer conexões remotas seguras

O que Você Aprenderá Neste Artigo

  • Conceitos básicos e mecanismos do SSH
  • Como instalar um servidor SSH no Ubuntu
  • Como configurar conexões SSH e solucionar erros
  • Melhores práticas de segurança para SSH

2. Conceitos Básicos do SSH

Para usar o SSH de forma eficaz, é crucial entender seus conceitos principais. Neste capítulo, explicamos como o SSH funciona e as diferenças entre os métodos de autenticação.

Como o SSH Funciona

O SSH é um protocolo que estabelece uma conexão segura entre um cliente e um servidor. Por padrão, ele usa a porta TCP 22 para comunicação criptografada.

Principais Recursos

  • Login Remoto : Executar comandos em um servidor
  • Transferência de Arquivos : Enviar dados de forma segura via SCP ou SFTP
  • Redirecionamento de Porta : Conectar a outros serviços através do SSH

Métodos de Autenticação do SSH

O SSH oferece principalmente dois métodos de autenticação:

Autenticação por Senha

  • Fazer login usando um nome de usuário e senha
  • Simples, mas vulnerável a ataques de força bruta

Autenticação por Chave Pública

  • Autenticação usando um par de chaves pública e privada
  • Mais seguro e recomendado por padrão

Vantagens do SSH

  • Comunicação Criptografada : Protege os dados transmitidos
  • Gerenciamento Remoto Fácil : Acesso de qualquer lugar
  • Segurança Aprimorada : Ajuda a prevenir acesso não autorizado

3. Instalando um Servidor SSH no Ubuntu

Para usar o SSH no Ubuntu, você deve instalar o pacote do servidor OpenSSH. Este capítulo explica como instalá-lo e configurá-lo.

Instalando o Servidor OpenSSH

Você pode instalar o servidor OpenSSH no Ubuntu usando os seguintes comandos:

sudo apt update
sudo apt install openssh-server

Após a instalação, verifique se o serviço SSH está em execução:

sudo systemctl status ssh

Iniciando e Gerenciando o Serviço SSH

Para iniciar ou parar manualmente o serviço SSH, use os seguintes comandos:

# Start SSH
sudo systemctl start ssh

# Enable SSH to start automatically after reboot
sudo systemctl enable ssh

# Stop SSH
sudo systemctl stop ssh

Configurando o UFW (Firewall Não Complicado)

Se o UFW estiver ativado, as conexões SSH podem ser bloqueadas. Permita a porta SSH (22) com os comandos abaixo:

sudo ufw allow ssh
sudo ufw enable

4. Configurando Conexões SSH

Para usar o SSH de forma segura, a configuração adequada é essencial. Este capítulo explica como configurar a autenticação por chave pública.

Gerando um Par de Chaves

Execute o seguinte comando na máquina cliente para gerar um par de chaves pública/privada:

ssh-keygen -t rsa -b 4096

Por padrão, a chave privada é armazenada em ~/.ssh/id_rsa, e a chave pública é armazenada em ~/.ssh/id_rsa.pub.

Fazendo Upload da Chave Pública para o Servidor

Transfira a chave pública gerada para o servidor SSH:

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

Ou transfira manualmente:

scp ~/.ssh/id_rsa.pub username@server-ip-address:~/

No servidor, execute os seguintes comandos para colocar a chave pública no diretório correto:

mkdir -p ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm ~/id_rsa.pub

Editando sshd_config

Abra o arquivo de configuração do SSH para melhorar as configurações de segurança:

sudo nano /etc/ssh/sshd_config

Verifique e edite os seguintes itens de configuração:

# Disable password authentication (use public key only)
PasswordAuthentication no

# Disable root login
PermitRootLogin no

# Change the SSH port (example: 2222)
Port 2222

Após fazer as alterações, reinicie o serviço SSH:

sudo systemctl restart ssh

5. Executando Conexões SSH

Depois que o servidor SSH estiver configurado no Ubuntu, você pode se conectar a partir de uma máquina cliente. Este capítulo explica o uso básico do SSH e os métodos de conexão quando a porta é alterada.

Comando Básico de Conexão SSH

Use o comando a seguir para conectar de um cliente SSH ao servidor:

ssh username@server-ip-address

Por exemplo, se o IP do servidor for 192.168.1.10 e o nome de usuário for ubuntu, digite:

ssh ubuntu@192.168.1.10

Na primeira conexão, a impressão digital do servidor será exibida. Digite yes para aceitar e prosseguir.

Conectando Após Alterar o Número da Porta

Se você alterou a porta do SSH — por exemplo, para 2222 — use a opção -p:

ssh -p 2222 ubuntu@192.168.1.10

Conectando com uma Chave Privada

Se a autenticação por chave pública estiver configurada, especifique a chave privada usando a opção -i:

ssh -i ~/.ssh/id_rsa ubuntu@192.168.1.10

Executando Comandos Remotos via SSH

Você pode executar comandos diretamente no servidor remoto sem fazer login interativo:

ssh ubuntu@192.168.1.10 "ls -lah /home/ubuntu"

Essa abordagem permite automação eficiente e operações remotas usando scripts.

Transferindo Arquivos com SCP

Você pode transferir arquivos entre o PC local e o servidor remoto usando SSH.

Local → Remote

scp filename username@server-ip-address:/remote/directory

Exemplo:

scp myfile.txt ubuntu@192.168.1.10:/home/ubuntu/

Remote → Local

scp username@server-ip-address:/remote/filename /local/directory

Exemplo:

scp ubuntu@192.168.1.10:/home/ubuntu/myfile.txt ./

Gerenciando Arquivos com SFTP

Você também pode gerenciar arquivos usando SFTP:

sftp ubuntu@192.168.1.10

Uma vez conectado, você pode executar os seguintes comandos:

ls        # List files
cd        # Change directory
put filename   # Upload a local file to the remote server
get filename   # Download a remote file to the local machine
exit      # Exit the connection

6. Solucionando Problemas de Conexões SSH

Não é incomum encontrar problemas ao conectar via SSH. Este capítulo descreve problemas comuns e como resolvê‑los.

Causas Comuns de Erros de Conexão SSH e Soluções

Quando uma conexão SSH falha, a causa geralmente é uma das seguintes:

1. O Servidor SSH Não Está em Execução

Primeiro, confirme que o servidor SSH está em execução corretamente:

sudo systemctl status ssh

Solução:

  • Se o servidor SSH estiver parado, inicie‑o usando o seguinte comando:
    sudo systemctl start ssh
    
  • Para habilitar o SSH a iniciar automaticamente após a reinicialização, execute:
    sudo systemctl enable ssh
    

2. O Firewall (UFW) Está Bloqueando o SSH

Se o UFW (Uncomplicated Firewall) estiver habilitado, o acesso SSH pode ser bloqueado:

Solução:

  • Verifique a configuração atual do UFW:
    sudo ufw status
    
  • Permita o acesso SSH:
    sudo ufw allow ssh
    

(Se estiver usando uma porta personalizada, execute sudo ufw allow <port-number>)

  • Reinicie o UFW:
    sudo ufw reload
    

3. O Número da Porta Foi Alterado

Se o servidor SSH não estiver usando a porta padrão 22, você deve especificar a porta correta ao conectar:

Solução:

  • Verifique o número da porta no servidor:
    sudo grep Port /etc/ssh/sshd_config
    
  • Especifique a porta correta no cliente:
    ssh -p 2222 username@server-ip-address
    

4. Permissões Incorretas da Chave SSH

Se você estiver usando autenticação por chave pública, permissões incorretas da chave podem impedir a conexão.

Solução:

  • Defina permissões para a chave privada:
    chmod 600 ~/.ssh/id_rsa
    
  • Defina permissões para a chave pública:
    chmod 644 ~/.ssh/authorized_keys
    

5. Incompatibilidade da Chave do Host

Se a chave do host SSH no servidor mudou, o cliente pode exibir um erro como: “AVISO: A IDENTIFICAÇÃO DO HOST REMOTO MUDOU!”

Solução:

  • Remova a chave antiga do host:
    ssh-keygen -R <server-ip-address>
    
  • Tente conectar novamente:
    ssh username@server-ip-address
    

6. Verificando Logs do SSH

Para identificar mensagens de erro detalhadas do SSH, verifique os arquivos de log do servidor:

sudo journalctl -u ssh --no-pager | tail -n 20

Para monitorar os logs em tempo real, execute:

sudo tail -f /var/log/auth.log

7. Problemas de Tempo Limite de Conexão SSH

Se as conexões SSH estiverem lentas ou desconectarem inesperadamente, revise os seguintes pontos:

Solução:

  • Habilitar KeepAlive Adicione o seguinte ao ~/.ssh/config do cliente:
    Host *
        ServerAliveInterval 60
    
  • Ajustar configurações de tempo limite no servidor Adicione o seguinte ao /etc/ssh/sshd_config e reinicie o serviço:
    ClientAliveInterval 60
    ClientAliveCountMax 3
    
    sudo systemctl restart ssh
    

Resumo

SSH connection problems typically stem from the following points. In most cases, checking these items resolves the issue:

Verifique se o serviço SSH está em execução
Verifique se o firewall está bloqueando a conexão
Confirme se a porta SSH correta está sendo usada
Garanta que as permissões das chaves SSH estejam configuradas corretamente
Revise os logs do SSH para identificar erros detalhados

7. Melhorando a Segurança do SSH

O SSH é uma ferramenta poderosa de acesso remoto, mas sem medidas de segurança adequadas, pode se tornar um alvo para acesso não autorizado ou ataques de força bruta. Este capítulo explica as configurações recomendadas para reforçar a segurança do SSH.

1. Desativar Autenticação por Senha e Usar Autenticação por Chave Pública

Por padrão, o SSH permite login por senha, o que aumenta o risco de ataques de força bruta. Habilite a autenticação por chave pública e desative a autenticação por senha para melhorar a segurança.

Etapas

  1. Edite o sshd_config
    sudo nano /etc/ssh/sshd_config
    
  1. Edite ou adicione as seguintes configurações
    PasswordAuthentication no
    PubkeyAuthentication yes
    
  1. Reinicie o serviço SSH
    sudo systemctl restart ssh
    

Após aplicar esta configuração, o SSH aceitará apenas autenticação por chave pública. Certifique‑se de que suas chaves SSH estejam configuradas corretamente com antecedência.

2. Alterar o Número da Porta SSH

Usar a porta padrão do SSH (22) torna os servidores alvos mais fáceis para atacantes. Alterar o número da porta ajuda a reduzir tentativas de acesso não autorizado.

Etapas

  1. Abra o sshd_config
    sudo nano /etc/ssh/sshd_config
    
  1. Modifique a linha a seguir (exemplo: altere a porta para 2222)
    Port 2222
    
  1. Permita a nova porta através do firewall
    sudo ufw allow 2222/tcp
    
  1. Reinicie o serviço SSH
    sudo systemctl restart ssh
    
  1. Teste a conexão usando a nova porta
    ssh -p 2222 username@server-ip-address
    

3. Desativar Login como Root

Por padrão, o SSH permite login como root, o que representa um sério risco de segurança. Recomenda‑se permitir acesso SSH apenas através de contas de usuário normais e usar sudo quando privilégios administrativos forem necessários.

Etapas

  1. Abra o sshd_config
    sudo nano /etc/ssh/sshd_config
    
  1. Edite a linha a seguir
    PermitRootLogin no
    
  1. Reinicie o serviço SSH
    sudo systemctl restart ssh
    

4. Prevenir Ataques de Força Bruta com Fail2Ban

Fail2Ban detecta tentativas de login não autorizadas e bloqueia automaticamente endereços IP que excedem um certo número de falhas.

Instalação e Configuração

  1. Instale o Fail2Ban
    sudo apt install fail2ban -y
    
  1. Copie o arquivo de configuração padrão
    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    
  1. Edite jail.local
    sudo nano /etc/fail2ban/jail.local
    
  1. Modifique a seção [sshd]
    [sshd]
    enabled = true
    maxretry = 5
    bantime = 600
    findtime = 600
    
  • maxretry : Número de tentativas de login falhadas permitidas
  • bantime : Duração do bloqueio de IP (segundos)
  • findtime : janela de tempo para contar tentativas falhadas (segundos)
  1. Reinicie o Fail2Ban
    sudo systemctl restart fail2ban
    
  1. Verifique o status atual do Fail2Ban
    sudo fail2ban-client status sshd
    

Resumo

Para melhorar a segurança do SSH, aplique as seguintes medidas:

Desative a autenticação por senha e use autenticação por chave pública
Altere a porta do SSH para reduzir a exposição a ataques
Desative o login como root para minimizar riscos
Use o Fail2Ban para prevenir ataques de força bruta

8. Perguntas Frequentes (FAQ)

Esta seção aborda perguntas e problemas comuns que surgem ao configurar e usar o SSH.

Q1: Por que o SSH mostra “Connection refused”?

Existem várias causas possíveis para que uma conexão SSH seja recusada.

Principais causas e soluções:

  1. O serviço SSH não está em execução
    sudo systemctl status ssh
    

Solução: Inicie o serviço se ele estiver parado.

sudo systemctl start ssh
  1. O firewall (UFW) está bloqueando o SSH
    sudo ufw allow ssh
    sudo ufw enable
    
  1. O número da porta SSH foi alterado
    Se o SSH usar uma porta personalizada, especifique-a ao conectar.
    ssh -p 2222 username@server-ip-address
    

Q2: Como mudar a porta padrão do SSH?

A porta 22 é um alvo comum de ataques, portanto alterá‑la melhora a segurança.

Passos:

  1. Edite o arquivo de configuração do SSH
    sudo nano /etc/ssh/sshd_config
    
  1. Modifique a diretiva Port
    Port 2222
    
  1. Permita a nova porta através do firewall
    sudo ufw allow 2222/tcp
    
  1. Reinicie o serviço SSH
    sudo systemctl restart ssh
    

Após fazer essas alterações, conecte‑se usando a nova porta:

ssh -p 2222 username@server-ip-address

Q3: O que verificar se a autenticação por chave pública não está funcionando?

Verifique o seguinte se a autenticação por chave SSH falhar:

  1. Certifique‑se de que a chave pública está corretamente instalada
    ls -l ~/.ssh/authorized_keys
    

Garanta que authorized_keys exista e contenha a chave correta.

  1. Verifique as permissões dos arquivos
    chmod 600 ~/.ssh/authorized_keys
    chmod 700 ~/.ssh
    
  1. Confirme que o SSH permite autenticação por chave pública
    sudo nano /etc/ssh/sshd_config
    

Assegure que as seguintes entradas estejam presentes:

PubkeyAuthentication yes
PasswordAuthentication no
  1. Reinicie o serviço SSH
    sudo systemctl restart ssh
    

Q4: Como permitir acesso SSH apenas de endereços IP específicos?

Restringir o acesso SSH a IPs específicos aumenta significativamente a segurança.

Método 1: Editar sshd_config

  1. Abra o arquivo de configuração
    sudo nano /etc/ssh/sshd_config
    
  1. Adicione uma entrada AllowUsers
    AllowUsers username@192.168.1.100
    
  1. Reinicie o serviço SSH
    sudo systemctl restart ssh
    

Método 2: Configurar o firewall (UFW)

  1. Permita acesso de um IP específico
    sudo ufw allow from 192.168.1.100 to any port 22
    
  1. Negue o acesso dos demais
    sudo ufw deny 22
    

Q5: Como mudar o tempo limite da sessão SSH?

Se sua sessão SSH desconectar após ficar ociosa, modifique as seguintes configurações.

Configurações do cliente

  1. Adicione o seguinte em ~/.ssh/config :
    Host *
        ServerAliveInterval 60
    

Configurações do servidor

  1. Edite sshd_config
    sudo nano /etc/ssh/sshd_config
    
  1. Adicione ou modifique:
    ClientAliveInterval 60
    ClientAliveCountMax 3
    
  1. Reinicie o serviço SSH
    sudo systemctl restart ssh
    

Resumo

Este FAQ cobriu os problemas e soluções mais comuns de SSH. Quando um problema ocorre, sempre revise os logs e as configurações para identificar a causa.

Como resolver problemas de “Connection refused”
Como mudar a porta padrão do SSH e conectar corretamente
Como solucionar falhas de autenticação com chave pública
Como restringir o acesso SSH a endereços IP específicos
Como evitar tempos limite de sessão SSH

9. Conclusão

Este artigo explicou como configurar e usar o SSH no Ubuntu, desde conceitos básicos até práticas avançadas de segurança. Vamos recapitular os pontos principais.

Principais Aprendizados

1. Conceitos Básicos de SSH

  • O SSH permite acesso remoto seguro por meio de comunicação criptografada.
  • Mais seguro que Telnet ou FTP.
  • Os métodos de autenticação incluem autenticação por senha e autenticação por chave pública.

2. Instalando o Servidor SSH

  • Instale o OpenSSH via sudo apt install openssh-server.
  • Verifique o status do serviço com systemctl status ssh.
  • Permita acesso SSH via UFW usando sudo ufw allow ssh.

3. Configurando o Acesso SSH

  • Conecte-se com ssh username@server-ip-address.
  • Use autenticação por chave pública para melhorar a segurança.
  • Desative a autenticação por senha em sshd_config se desejar.

4. Solução de Problemas

  • Verifique se o SSH está em execução (systemctl status ssh).
  • Especifique a porta correta se alterada (ssh -p 2222 username@IP).
  • Verifique as permissões da chave em ~/.ssh/authorized_keys.

5. Melhorias de Segurança

  • Desative a autenticação por senha e confie em chaves públicas.
  • Mude a porta do SSH para reduzir ataques de varredura.
  • Use o Fail2Ban para bloquear falhas de login repetidas.
  • Restrinja o acesso SSH a endereços IP específicos quando possível.

Recursos Adicionais de Aprendizado

Para aprofundar seu entendimento sobre SSH, explore os recursos a seguir:

📚 Documentação Oficial

🛠 Ferramentas Relacionadas

🎥 Vídeos Recomendados

  • Pesquise no YouTube por “Ubuntu SSH setup” para encontrar tutoriais para iniciantes.

作成した動画を友だち、家族、世界中の人たちと共有…

Próximos Passos

Depois de entender como o SSH funciona, explore usos mais avançados:

Automatizar o gerenciamento de servidores usando Ansible via SSH

  • Ideal para gerenciar vários servidores de forma eficiente.

Tunelamento SSH e encaminhamento de portas

  • Use o SSH para proteger conexões de desktop remoto ou criar túneis semelhantes a VPN.

Monitorar logs do SSH e melhorar a segurança

  • Use ferramentas como fail2ban e logwatch para observar atividades suspeitas.

Considerações Finais

Obrigado por ler este guia até o final! 🎉
Configurar corretamente o SSH no Ubuntu aumenta significativamente a eficiência e a segurança do gerenciamento remoto.

À medida que você continua aprendendo, explore técnicas avançadas como tunelamento seguro e monitoramento proativo para construir sistemas ainda mais robustos.

Desfrute de uma experiência SSH segura e produtiva! 🖥️🔐

年収訴求