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.

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.

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

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.

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.

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.

Adicione o conteúdo da chave pública gerada ao arquivo de lista de permissões de autenticação ~/.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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.