Utilizando SSH no Ubuntu! Um Guia Abrangente para Conexão, Alteração de Porta e Autenticação por Chave Pública

目次

1. Introdução

Ao usar SSH no Ubuntu, você pode acessar e gerenciar seu servidor ou PC remotamente de forma segura. Este guia explica tudo, desde o básico do SSH até a instalação de um servidor SSH no Ubuntu, medidas de segurança e solução de problemas. Foi projetado para ser amigável a iniciantes e fácil de entender.

O que é SSH?

SSH (Secure Shell) é um protocolo que permite conexões remotas seguras através de uma rede. Ao contrário do Telnet ou FTP tradicionais, o SSH criptografa os dados, reduzindo significativamente o risco de escuta e adulteração.

Principais casos de uso do SSH no Ubuntu

  • Gerenciamento remoto de servidor : Operar um servidor Ubuntu a partir de um local remoto.
  • Transferência de arquivos : Transferir arquivos de forma segura usando SCP ou SFTP.
  • Encaminhamento de portas : Estabelecer uma conexão remota segura.

O que você aprenderá neste guia

  • Conceitos básicos e funcionamento do SSH
  • Como instalar um servidor SSH no Ubuntu
  • Configurações de conexão SSH e solução de problemas
  • Medidas de segurança para o SSH

2. Conceitos básicos do SSH

Para usar o SSH de forma eficaz, é importante entender seus conceitos básicos. Esta seção explica como o SSH funciona e os diferentes métodos de autenticação.

Como o SSH funciona

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 usando SCP ou SFTP.
  • Encaminhamento de portas : Conectar a outros serviços via SSH.

Métodos de autenticação SSH

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

Autenticação por senha

  • Login usando nome de usuário e senha.
  • Fácil de usar, 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 segura e recomendada em relação à autenticação por senha.

Vantagens do SSH

  • Criptografia de dados : Protege a comunicação contra interceptação.
  • Gerenciamento remoto fácil : Acessível 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ê precisa instalar o servidor OpenSSH. Esta seção explica os passos de instalação e a configuração básica.

Instalando o servidor OpenSSH

Você pode instalar o servidor OpenSSH no Ubuntu com o seguinte comando:

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 verificando 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 on reboot
sudo systemctl enable ssh

# Stop SSH
sudo systemctl stop ssh

Configurando o UFW (Uncomplicated Firewall)

Se o UFW estiver habilitado por padrão, as conexões SSH podem ser bloqueadas. Permita o acesso SSH executando:

sudo ufw allow ssh
sudo ufw enable

4. Configurando conexões SSH

Para usar o SSH com segurança, a configuração adequada é essencial. Esta seção explica como configurar a autenticação por chave pública.

Gerando um par de chaves

No lado do cliente, execute o seguinte comando para criar um par de chaves pública e privada:

ssh-keygen -t rsa -b 4096

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

Copiando a chave pública para o servidor

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

ssh-copy-id username@server-ip

Alternativamente, copie manualmente a chave usando SCP:

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

No servidor, mova a chave pública para o diretório correto:

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

Editando o arquivo sshd_config

Aumente a segurança modificando o arquivo de configuração do SSH:

sudo nano /etc/ssh/sshd_config

Atualize as seguintes configurações:

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

# Disable root login
PermitRootLogin no

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

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

sudo systemctl restart ssh

5. Conectando a um Servidor SSH

Uma vez que o servidor SSH esteja configurado, você precisa se conectar a ele de uma máquina cliente. Esta seção explica métodos básicos de conexão SSH e o tratamento de alterações de porta.

Comando Básico de Conexão SSH

Para se conectar a um servidor SSH de um cliente, use:

ssh username@server-ip

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, você verá um prompt de verificação de impressão digital. Digite “yes” para aceitar e continuar.

Conectando com uma Porta Personalizada

Se a porta padrão (22) tiver sido alterada, especifique a porta usando a opção -p:

ssh -p 2222 ubuntu@192.168.1.10

Conectando com uma Chave Privada

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

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

Executando Comandos Remotos via SSH

Você pode executar comandos remotos sem fazer login no servidor de forma interativa:

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

Isso é útil para automação e gerenciamento remoto.

Transferindo Arquivos com SCP

Use SSH para transferir arquivos entre um PC local e um servidor remoto.

Do Local para o Remoto

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

Exemplo:

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

Do Remoto para o Local

scp username@server-ip:/remote/file ./local/directory

Exemplo:

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

Gerenciando Arquivos com SFTP

Use SFTP para gerenciamento de arquivos via SSH:

sftp ubuntu@192.168.1.10

Uma vez conectado, você pode usar comandos como:

ls        # List files
cd        # Change directory
put file  # Upload file from local to remote
get file  # Download file from remote to local
exit      # Exit SFTP session

6. Solucionando Problemas de Conexões SSH

Problemas de conexão SSH são comuns. Esta seção cobre problemas típicos e suas soluções.

Erros Comuns de Conexão SSH e Correções

Se a conexão SSH falhar, considere as seguintes causas:

1. O Servidor SSH Não Está Executando

Verifique se o servidor SSH está ativo:

sudo systemctl status ssh

Solução:

  • Se o servidor não estiver executando, inicie-o com:
sudo systemctl start ssh
  • Garanta que o SSH inicie automaticamente na reinicialização:
sudo systemctl enable ssh

2. Firewall (UFW) Está Bloqueando o SSH

Se o UFW (Uncomplicated Firewall) estiver ativado, ele pode bloquear o acesso SSH.

Solução:

  • Verifique as configurações atuais do UFW:
sudo ufw status
  • Permita conexões SSH:
sudo ufw allow ssh

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

  • Reinicie o UFW:
sudo ufw reload

3. O Número da Porta SSH Foi Alterado

Se o SSH estiver executando em uma porta diferente, certifique-se de especificar a porta correta ao se conectar.

Solução:

  • Verifique a porta SSH configurada:
sudo grep Port /etc/ssh/sshd_config
  • Use a porta correta ao se conectar:
ssh -p 2222 username@server-ip

4. Permissões Incorretas de Chaves SSH

Permissões de arquivo incorretas para chaves SSH podem causar falhas de autenticação.

Solução:

  • Garanta que a chave privada tenha as permissões corretas:
chmod 600 ~/.ssh/id_rsa
  • Garanta que o arquivo de chaves autorizadas esteja configurado corretamente:
chmod 644 ~/.ssh/authorized_keys

5. Verificando Logs do SSH

Para diagnosticar problemas do SSH, verifique os logs:

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

Para monitoramento de logs em tempo real:

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

7. Melhorando a Segurança do SSH

SSH é uma ferramenta poderosa de acesso remoto, mas sem medidas de segurança adequadas, pode se tornar um alvo para acesso não autorizado e ataques de força bruta. Esta seção explica configurações recomendadas para aprimorar a segurança do SSH.

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

Por padrão, o SSH permite autenticação por senha, o que aumenta o risco de ataques de força bruta. Mudar para autenticação por chave pública aprimora a segurança.

Passos

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

Isso garante que o SSH aceite autenticação apenas via chaves públicas. Certifique-se de configurar a autenticação por chave pública antes de aplicar esta mudança.

2. Alterar a Porta SSH Padrão

Usar a porta SSH padrão (22) a torna um alvo fácil para ataques. Alterar a porta aprimora a segurança.

Passos

  1. Abra o arquivo sshd_config:
sudo nano /etc/ssh/sshd_config
  1. Modifique o número da porta (ex.: altere para 2222):
Port 2222
  1. Permita a nova porta pelo firewall:
sudo ufw allow 2222/tcp
  1. Reinicie o serviço SSH:
sudo systemctl restart ssh
  1. Teste a nova porta:
ssh -p 2222 username@server-ip

3. Desabilitar Login como Root

Por padrão, o usuário root pode fazer login via SSH, o que representa um risco de segurança. Recomenda-se permitir que apenas usuários específicos se conectem.

Passos

  1. Abra o arquivo sshd_config:
sudo nano /etc/ssh/sshd_config
  1. Modifique a seguinte configuração:
PermitRootLogin no
  1. Reinicie o serviço SSH:
sudo systemctl restart ssh

4. Prevenir Ataques de Força Bruta com Fail2Ban

O Fail2Ban monitora tentativas de login e bloqueia endereços IP após múltiplas tentativas de autenticação fracassadas.

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 as configurações sob [sshd] :
[sshd]
enabled = true
maxretry = 5
bantime = 600
findtime = 600
  • maxretry : Número máximo de tentativas de login permitidas.
  • bantime : Tempo (em segundos) em que um IP será bloqueado.
  • findtime : Janela de tempo (em segundos) para contar tentativas fracassadas.
  1. Reinicie o Fail2Ban:
sudo systemctl restart fail2ban
  1. Verifique o status do Fail2Ban:
sudo fail2ban-client status sshd

8. Perguntas Frequentes (FAQ)

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

Q1: Por que a conexão SSH está sendo recusada?

Causas possíveis:

  • O serviço SSH não está rodando → Verifique com sudo systemctl status ssh
  • O firewall está bloqueando o SSH → Permita o SSH com sudo ufw allow ssh
  • Usando uma porta personalizada → Conecte usando ssh -p <port> username@server-ip

Q2: Como alterar a porta SSH padrão?

Modifique o arquivo sshd_config:

sudo nano /etc/ssh/sshd_config

Altere a porta:

Port 2222

Em seguida, reinicie o SSH:

sudo systemctl restart ssh

Q3: Como permitir que apenas IPs específicos acessem o SSH?

Modifique as configurações do firewall:

sudo ufw allow from 192.168.1.100 to any port 22

Ou use sshd_config:

AllowUsers username@192.168.1.100

9. Conclusão

Este guia cobriu tudo, desde os conceitos básicos do SSH até aprimoramentos de segurança. Aqui estão os principais pontos:

  • Use autenticação por chave pública em vez de senhas.
  • Altere a porta SSH padrão para melhor segurança.
  • Desabilite o login como root para prevenir acesso não autorizado.
  • Use Fail2Ban para bloquear ataques de força bruta.
  • Monitore os logs do SSH para solução de problemas.

Recursos Adicionais

Seguindo estas boas práticas, você pode manter um ambiente SSH seguro e eficiente. 🚀