O SSH (Secure Shell) é um software de baixo custo cujo foco é a segurança das redes. Quando um dado é enviado pela rede, o SSH automaticamente realiza a encriptação dos dados - de forma transparente ao usuário. O que sempre devemos ter em mente é que o SSH não é um produto - e sim, um protocolo que oferece suporte a autenticação, encriptação e a integridade dos dados transmitidos pela rede. Neste artigo, analisaremos brevemente todos os componentes do SSH. Vale ressaltar que “componente” não significa necessariamente “programa”. O SSH possui chaves, sessões, etc.


Servidor


Programa que permite, dentre alguns outros tópicos, a chegada de conexões SSH em uma máquina, a manipulação de autenticação, autorização, etc. Na maioria das implementações do SSH no Unix, o servidor é o sshd.


Cliente


Um programa que se conecta aos servidores SSH e realiza os pedidos, como “Deixe-me logar” (“Log me in”), ou “Copie este arquivo” (“Copy this file”). Tanto no SSH1, SSH2 e, ainda, no OpenSSH, a maioria dos clientes são ssh e scp.


Sessão


Uma conexão (em andamento) entre um cliente e um servidor. Ela tem início após o cliente ter se autenticado com sucesso a um servidor e termina quando a conexão é finalizada. As sessões também poderão ser interativas ou batch.


Chave


Um pequeno conjunto de dados usados como parâmetros para os algoritmos de criptografia, tais como encriptação ou autenticação de mensagem. Há, ainda, duas espécies de chaves: simétricas e assimétricas. Uma chave assimétrica, por exemplo, possui duas partes: os componentes públicos e privados. O SSH lida com quatro tipos de chaves:



Gerador de chave


Um programa que cria chaves persistentes (chaves de usuário e host) para o SSH. O SSH1, SSH2 e o OpenSSH possuem o programa ssh-keygen.


Banco de dados de hosts


Uma coleção de chaves de hosts. Clientes e servidores se referem a este banco de dados para se autenticarem.


Agente


Um programa que guarda as chaves de usuário na memória, evitando ao usuário ter que ficar digitando suas senhas toda hora. O SSH1, SSH2 e o OpenSSH possuem o agente ssh-agent e o programa ssh-add carrega e descarrega a cache de chaves.


Sinalizador


Programa que assinala os pacotes de autenticação de hosts.


Seeds


Grupo de dados aleatórios usados pelos componentes para inicializar o (pseudo) software de gerador de números aleatórios.


Arquivo de configuração


Uma coleção de configurações para adaptar o comportamento de um cliente ou servidor SSH.

Para a implementação do SSH, nem todos estes componentes são requeridos. Certamente os servidores, clientes e chaves são obrigatórios. No entanto, muitas implementações não possuem um agente, por exemplo. Algumas, ainda, nem incluem um gerador de chaves.