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.