A Sessão SSH é o período de tempo entre o estabelecimento da conexão segura e o seu encerramento. Uma das características mais poderosas do protocolo SSH é a sua capacidade de gerenciar múltiplos canais lógicos dentro de uma única conexão TCP física.

1. Ciclo de Vida da Sessão

A sessão SSH passa por quatro fases principais:
1. Conexão TCP: Estabelecida na porta 22 (ou outra porta configurada).
2. Handshake de Transporte: Onde o servidor se autentica para o cliente e as chaves de criptografia são trocadas.
3. Autenticação do Usuário: Onde o cliente prova que tem permissão para acessar o servidor.
4. Canais de Comunicação: Uma vez autenticado, a sessão entra em modo operacional, abrindo canais conforme a necessidade do usuário.

2. Canais Multiplexados (RFC 4254)

Diferente do Telnet ou do FTP original, o SSH permite que você abra vários “Canais” lógicos ao mesmo tempo sobre a mesma conexão segura:

  • Canal de Shell (Session Channel): Usado para a linha de comando interativa.
  • Canal de Execução (Exec Channel): Usado pelo comando ssh servidor "ls -l" para rodar um comando e fechar imediatamente.
  • Canal de Tunelamento (Port Forwarding): Redireciona portas locais ou remotas através do túnel.
  • Canal de Subsistema: Usado por serviços como o SFTP para transferência de arquivos.

3. Gestão de Canais e Encerramento

Cada canal possui seu próprio identificador (número do canal) e janelas de controle de fluxo individuais. Isso garante que, se um canal for bloqueado por uma transferência lenta, os outros canais continuem funcionando.

  • Encerramento Amigável: O cliente envia uma mensagem de fechamento de canal (SSH_MSG_CHANNEL_CLOSE). Quando todos os canais são fechados, a conexão TCP é finalizada.
  • Interrupção: Se a rede cair ou o processo for morto, os canais são perdidos, mas a segurança do túnel de transporte garante que nenhum lixo de dados vaze para a rede.

[!TIP]
Você pode abrir múltiplos terminais em uma única conexão SSH usando ferramentas de multiplexação de terminal como o TMUX ou o Screen, mantendo suas sessões vivas mesmo se você se desconectar do servidor.