SSH Agent e Autenticação por chaves
Last updated
Last updated
O SSH Agent atua como um gerenciador de chaves, armazenando-as na memória, sem criptografar, prontas para uso. Ele é especialmente útil porque elimina a necessidade de digitar a senha a cada conexão a um servidor, funcionando independentemente do cliente SSH e iniciando geralmente após o primeiro uso do comando ssh
após um reboot do sistema.
A chave privada armazenada em um agente SSH tem uma função específica: assinar mensagens. Isso pode gerar uma confusão comum, especialmente entre aqueles que estão aprendendo sobre chaves SSH pela primeira vez. Muitos assumem que as chaves SSH, compostas por uma chave pública e uma chave privada, são usadas para criptografar e descriptografar o tráfego de dados durante a comunicação SSH. No entanto, este não é o caso.
As chaves SSH são utilizadas apenas para autenticação durante o handshake inicial de uma sessão SSH. Durante esse processo, a chave privada é usada exclusivamente para assinar digitalmente mensagens, uma tarefa crucial para estabelecer a identidade do usuário sem revelar a chave privada. Aqui está uma visão geral de como isso funciona:
Apresentação da Chave Pública: O cliente apresenta sua chave pública ao servidor. Está já deve ter sido primariamente configurada no mesmo.
Geração de Mensagem Aleatória: O servidor então cria e envia uma mensagem aleatória e breve, solicitando que o cliente a assine com sua chave privada.
Assinatura pelo Agente SSH: O cliente utiliza o SSH agent para assinar a mensagem e envia a mensagem assinada de volta para o servidor.
Verificação pelo Servidor: O servidor verifica a assinatura usando a chave pública do cliente.
Confirmação de Posse: Uma vez que a assinatura é validada, o servidor tem a confirmação de que o cliente está realmente na posse da chave privada correspondente à chave pública apresentada.
Após a fase de autenticação, e não durante, é que a comunicação propriamente dita é criptografada. Isso é feito através da geração de chaves simétricas e efêmeras que são compartilhadas durante a sessão. Essas chaves são temporárias e podem ser alteradas periodicamente durante a sessão por meio de eventos conhecidos como "rekeying". Este processo garante que a sessão permaneça segura, mesmo se a chave inicial for comprometida após seu estabelecimento.
Portanto, as chaves SSH têm funções bem delimitadas: a autenticação é feita com as chaves assimétricas e a criptografia da sessão é realizada com chaves simétricas temporárias, garantindo assim tanto a segurança quanto a eficiência da comunicação.
O agent forwarding permite que um agente SSH se autentique em um servidor remoto através de uma conexão SSH existente. Algo como realizar uma nova conexão ssh a partir de uma ssh já em execução esse recurso é especialmente util quando se tem maquinas internas em uma rede as quais não se pretende comprometer a segurança ao expo-las a internet pública. Neste caso o agente ssh do servidor encaminha as chaves de acesso a outras maquinas dentro da rede permitindo assim ascender a um host mais interno na rede. O servidor usado como intermediario é comumente nomeado de bastion host.
Mais sobre SSH Agent: