Key Pair, ou SSH Keys ou ainda Chave Pública, é o meio de identificação entre seu computador e um servidor SSH usando método de autenticação chave de criptografia pública. Uma de suas vantagens diferentemente do método tradicional com login e senha é que para autenticação com servidor remoto você não precisa enviar seu login e senha, e mesmo que uma pessoa mal intencionada intercepte sua transmissão de dados pela rede não poderá ter acesso à suas credencias impossibilitando roubo de seus dados de acesso. E também, usando SSH Keys para autenticação elimina drasticamente o risco de um hacker tentar adivinhar seu login e senha enviando centenas ou milhares de combinações aleatórias de login e senha para entrar no sistema, esse é um tipo de ataque comum em sistemas baseado em autenticação de login e senha chamado de brute-force password.

Além de oferecer uma camada de segurança, autenticação por SSH keys pode ser ainda mais conveniente do que o método tradicional de autenticação por login e senha. Quando usado com o programa SSH Agent, SSH keys permite a conexão com um servidor, ou múltiplos servidores, sem a necessidade de ter que lembrar ou digitar sua senha e login para cada acesso.

Como funciona SSH keys

SSH keys consiste em um par de chaves uma pública que deve ser instalada no servidor remoto, e uma outra chave privada que fica salva no seu computador. Somente você poderá ter acesso à chave privada, então tenha certeza de mantê-la salva em um lugar seguro em seu computador com as devidas permissões e uma boa Passphrase. As duas chaves juntas permitem que você conecte de forma segura a um servidor remoto usando o protocolo SSH ou SFTP.

NOTA: Para adicionar a sua chave pública na lista de chaves autorizadas é preciso ter acesso administrativo ao servidor no qual deseja estabelecer uma conexão SSH. Se você é usuário de um sistema onde esse acesso é restrito você deverá revelar sua chave pública para o responsável configurar e instalar para você. Lembre-se somente a chave pública deve ser revelada para terceiros.

Tipos de encriptação

O algoritmo usado para encriptar suas chaves pode ser RSA1, RSA, DSA ou ECDSA, porém o uso desses algoritmos depende da finalidade da sua chave e de recursos suportado pelo servidor SSH.

  • RSA1 (Rivest-Shamir-Adleman) é um algoritmo para o protocolo SSH versão 1, seu uso é limitado a servidores que não suportam a versão recente SSH 2.

  • RSA (Rivest-Shamir-Adleman) é o algoritmo para o protocolo SSH versão 2 o mais utilizado em servidores SSH e o mais seguro hoje em dia, possibilita autenticar e transmitir dados criptografados até o seu destino. Esse algoritmo é o RECOMENDADO para sua chave SSH.

  • DSA (Digital Signature Algorithm) é um algoritmo que pode ser usado para gerar sua chave, porém DSA tem se tornado menos seguro nos últimos anos. Sua função é somente autenticar DSA não encripta ou decripta dados.

  • ECDSA é um algoritmo variante do DSA provê tamanho menor da sua chave, esses tipos de chaves são usado apenas para autenticação.

Key Size

Key Size é o número de bits usado na criação da chave, esse número varia dependendo do algoritmo usado.

Para SSH keys RSA, o tamanho minimo de bits é 768 bits e o padrão é 2048 bits. Você pode tornar sua chave ainda mais segura usando 4096 bits.

NOTA: Para RSA não é recomendado utilizar menos do que 2048 bits. Geralmente 2048 bits é considerado seguro.

SSH keys DSA, devem conter exatos 1024 bits.

SSH keys ECDSA, aceita um dos três valores da curva elíptica: 256, 384 ou 521 bits.

Criar SSH Key pair

Para criar sua SSH keys você precisa ter o programa ssh-keygen parte do pacote OpenSSH encontrado apenas em sistemas Unix. Em distribuições do Linux e Mac OSX esse programa já vem instalado por padrão. Veja neste post como criar SSH Keys em sistemas Unix.

No Windows, o programa ssh-keygen não existe. A maneira mais simples de criar sua chave é utilizando o PuTTY, PuTTY é um programa de código aberto que emula um Terminal, semelhante ao Terminal do Linux, para estabelecer uma conexão SSH. PuTTY oferece o utilitário PuTTYGen no qual você deverá usar para criar sua chave. Veja neste post como criar sua SSH Key no Windows.

Alternativas como CopSSH pode ser usado no Windows ou se você usa GitHub o programa GitHub para Windows oferece o Git Shell como parte da instalação onde é possível criar SSH Keys usando o comando ssh-keygen do mesmo modo em sistemas Unix.