Guia Prático Definitivo de SSH no Ubuntu - Do Acesso Básico ao Redirecionamento de Portas e Configurações de Segurança de Forma Completa

Visão Geral

O SSH (Secure Shell) é um protocolo de rede padrão e essencial para o gerenciamento remoto de servidores Linux. Neste artigo, exploraremos passo a passo no ambiente Ubuntu desde a configuração do servidor OpenSSH, autenticação por chave pública sem senha, até o redirecionamento de portas (port forwarding) via SSH para conexões de rede corporativas e dicas essenciais de reforço de segurança.

1. Instalação do Servidor OpenSSH e Habilitação do Serviço

Para fornecer o serviço de acesso remoto no sistema Ubuntu, atualize a lista de pacotes mais recente e instale o pacote openssh-server.

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

Execute o comando systemctl enable --now ssh para habilitar o serviço SSH instalado para iniciar automaticamente na inicialização do sistema e executá-lo imediatamente.

sudo systemctl enable –now ssh

Verifique se o daemon do serviço SSH (sshd) está operando normalmente no estado ativo (active (running)).

sudo systemctl status ssh –no-pager

Execute o comando ss -tulpn | grep :22 para verificar se ele está no estado de escuta (LISTEN) na porta padrão do SSH (porta 22), aguardando conexões de rede.

ss -tulpn | grep :22

2. Geração e Registro de Par de Chaves SSH para Acesso Sem Senha

Crie o diretório ~/.ssh para armazenar com segurança os arquivos de chave SSH e defina a permissão como 700 para que apenas o proprietário tenha acesso.

mkdir -p ~/.ssh && chmod 700 ~/.ssh

Caso ainda não possua um par de chaves baseado no algoritmo Ed25519, que oferece excelente segurança e desempenho, execute o comando test -f ~/.ssh/id_ed25519 || ssh-keygen -t ed25519 -N '' -f ~/.ssh/id_ed25519 para gerar um novo par.
Como resultado da execução do comando, é possível confirmar que a chave privada (id_ed25519) e a chave pública (id_ed25519.pub) foram geradas corretamente.

test -f ~/.ssh/id_ed25519 || ssh-keygen -t ed25519 -N ’’ -f ~/.ssh/id_ed25519

Adicione o conteúdo da chave pública gerada ao arquivo de lista de permissões de autenticação ~/.ssh/authorized_keys.

cat ~/.ssh/id_ed25519.pub » ~/.ssh/authorized_keys

Restrinja a permissão do arquivo authorized_keys para 600 para manter a segurança do arquivo de chaves autorizadas e atender às verificações rigorosas de permissão do daemon SSH.

chmod 600 ~/.ssh/authorized_keys

Especifique a chave privada Ed25519 gerada para tentar a conexão com o endereço de loopback local (127.0.0.1) e valide se a autenticação baseada em chave está funcionando adequadamente.
Como resultado da execução do comando, uma mensagem confirmando o sucesso do acesso local por chave sem a necessidade de digitar senha é exibida.

ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=no $(whoami)@127.0.0.1 ’echo SSH 로컬 키 인증 접속 성공!’

3. Tunelamento de Rede na Prática: Laboratório de Redirecionamento de Portas SSH

Para executar o servidor web e realizar os testes de requisições HTTP, atualize a lista de pacotes e instale os pacotes curl e python3.

sudo apt-get update -qq && sudo apt-get install -y curl python3

Crie o diretório raiz de documentos web a ser usado no teste de redirecionamento de portas e crie um arquivo HTML de teste executando o comando mkdir -p /tmp/webroot && echo '<h1>SSH Tunnel Test OK</h1>' > /tmp/webroot/index.html.

mkdir -p /tmp/webroot && echo ‘SSH Tunnel Test OK’ > /tmp/webroot/index.html

Execute o comando python3 -m http.server 8080 --directory /tmp/webroot >/dev/null 2>&1 & para iniciar um servidor web simples em segundo plano na porta 8080, atuando como um serviço interno.

python3 -m http.server 8080 –directory /tmp/webroot >/dev/null 2>&1 &

Inicie o redirecionamento de porta local em segundo plano para encaminhar as requisições que chegam à porta local 9090 para a porta 8080 do servidor de destino através do túnel seguro SSH.
Após executar o comando, o túnel de port forwarding é estabelecido com segurança em segundo plano sem ocupar a sessão do terminal.

ssh -f -N -L 9090:localhost:8080 -o StrictHostKeyChecking=no $(whoami)@127.0.0.1

Envie uma requisição HTTP para a porta local 9090 encaminhada pelo túnel SSH para verificar se a conexão com o servidor web interno está sendo retransmitida corretamente.
Como resultado da execução do comando, o conteúdo da resposta do servidor web interno da porta 8080, <h1>SSH Tunnel Test OK</h1>, é retornado, confirmando que o redirecionamento de porta funciona perfeitamente.

curl -s http://localhost:9090

Após concluir o teste de redirecionamento de portas, execute o comando pkill -f 'http.server 8080' para encerrar com segurança o processo do servidor web de teste em execução em segundo plano.

pkill -f ‘http.server 8080’

4. Configurações Práticas de Fortalecimento de Segurança do Servidor SSH (sshd_config)

Para se precaver contra imprevistos durante as alterações de configuração e manter o arquivo original preservado, faça um backup do arquivo de configuração com o comando sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Para reforçar a segurança, bloqueie completamente o login remoto direto da conta root alterando a configuração com o comando sudo sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config.

sudo sed -i ’s/^#PermitRootLogin./PermitRootLogin no/’ /etc/ssh/sshd_config

Execute o comando sudo sshd -t para validar preventivamente se não há erros de sintaxe ou de digitação no arquivo de configuração do servidor SSH modificado.
Após a execução do comando, nenhuma mensagem de erro é exibida, confirmando que a sintaxe da configuração está correta.

sudo sshd -t

Execute o comando grep -E '^(PermitRootLogin|PasswordAuthentication)' /etc/ssh/sshd_config || echo '설정 검증 완료' para conferir se a opção de bloqueio de login root (PermitRootLogin no) foi aplicada corretamente no arquivo de configuração.
Como resultado da execução, a linha PermitRootLogin no é encontrada normalmente, confirmando que a configuração de segurança foi aplicada com êxito.

grep -E ‘^(PermitRootLogin|PasswordAuthentication)’ /etc/ssh/sshd_config || echo ‘설정 검증 완료’

Até aqui, revisamos os tópicos essenciais para o dia a dia no ambiente Ubuntu: desde a conexão básica via SSH até o redirecionamento de portas e configurações indispensáveis de segurança.
Recomendamos aplicar essas diretrizes de segurança passo a passo para construir um ambiente de gerenciamento de servidores ainda mais seguro e eficiente.