A Sessão SSH é o estado operacional que ocorre após o sucesso do “aperto de mão” (handshake) e da autenticação. Quando dizemos que uma conexão segura foi estabelecida, significa que o cliente e o servidor criaram um túnel criptográfico íntegro, onde a identidade de ambos foi verificada e uma chave de sessão simétrica única foi gerada para proteger o tráfego subsequente.
1. O Estado de “Conexão Estabelecida”
Tecnicamente, uma conexão SSH estabelecida não é apenas um socket TCP aberto; é uma construção lógica de várias camadas de segurança que atingiram a maturidade:
-
Camada de Transporte (RFC 4253): Garante que a troca de chaves (KEX) foi concluída e que o sigilo direto perfeito (Perfect Forward Secrecy) está ativo.
-
Camada de Autenticação (RFC 4252): Confirma que o servidor aceitou as credenciais (senha, chave pública ou GSSAPI) e vinculou a sessão a um usuário específico do sistema.
-
Cifragem Ativa: A partir deste ponto, cada byte enviado pelo teclado do cliente é cifrado antes de sair para a rede e decifrado apenas dentro da memória do servidor.
2. Características do Túnel Estabelecido
Uma vez que a conexão está segura e ativa, ela apresenta propriedades fundamentais:
-
Bidirecionalidade: Tanto o cliente quanto o servidor podem enviar dados simultaneamente de forma segura.
-
Multiplexação: Uma única conexão segura estabelecida pode suportar múltiplos “canais” (ex: um shell interativo, uma transferência de arquivo via SFTP e um encaminhamento de porta rodando ao mesmo tempo no mesmo túnel).
-
Integridade Contínua: Cada pacote possui um número de sequência e um código de autenticação de mensagem (MAC). Se houver qualquer tentativa de injeção de dados no túnel, a conexão é derrubada instantaneamente.
3. O “Welcome Message” e o Shell
O sinal visível para o usuário de que a conexão segura foi estabelecida é, geralmente, a exibição do MOTD (Message of the Day) e o surgimento do prompt de comando (ex: user@server:~$).
Neste estágio:
-
O servidor alocou um PTY (Pseudo-Terminal) para o usuário.
-
As variáveis de ambiente (como
PATHeTERM) foram carregadas. -
O log de “Last Login” foi atualizado nos arquivos de auditoria do sistema (ex:
/var/log/auth.log).
4. Manutenção da Sessão (Keep-Alive)
Uma conexão estabelecida pode enfrentar problemas de inatividade (idle). Para garantir que o túnel permaneça seguro e ativo através de firewalls e NATs, utilizam-se mensagens de controle:
-
ServerAliveInterval (Cliente): O cliente envia um pacote nulo cifrado para o servidor para confirmar que ele ainda está lá.
-
ClientAliveInterval (Servidor): O servidor verifica se o cliente ainda possui a sessão ativa. Como essas mensagens são enviadas dentro do túnel já estabelecido, elas também são cifradas e protegidas contra manipulação.
5. Finalização Segura
A sessão permanece estabelecida até que:
-
O usuário execute o comando
exitoulogout. -
O processo cliente ou servidor seja encerrado.
-
Ocorra uma falha de rede (timeout).
No encerramento, as chaves de sessão temporárias são imediatamente apagadas da memória RAM de ambas as máquinas, garantindo que, mesmo que o hardware seja periciado posteriormente, os dados daquela sessão específica não possam ser recuperados.