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
- Edite o arquivo
sshd_config:
sudo nano /etc/ssh/sshd_config
- Modifique (ou adicione) as seguintes configurações:
PasswordAuthentication no
PubkeyAuthentication yes
- 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
- Abra o arquivo
sshd_config:
sudo nano /etc/ssh/sshd_config
- Modifique o número da porta (ex.: altere para 2222):
Port 2222
- Permita a nova porta pelo firewall:
sudo ufw allow 2222/tcp
- Reinicie o serviço SSH:
sudo systemctl restart ssh
- 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
- Abra o arquivo
sshd_config:
sudo nano /etc/ssh/sshd_config
- Modifique a seguinte configuração:
PermitRootLogin no
- 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
- Instale o Fail2Ban:
sudo apt install fail2ban -y
- Copie o arquivo de configuração padrão:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- Edite
jail.local:
sudo nano /etc/fail2ban/jail.local
- 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.
- Reinicie o Fail2Ban:
sudo systemctl restart fail2ban
- 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. 🚀


