/ Linux

Gerando SSH key em sistemas UNIX

Sua chave SSH ou par de chaves SSH são arquivos em formato texto plano contendo informações que lhe identificam unicamente em sistemas baseados em criptografia.

Elas são um par de chaves, uma pública, que pode ser distribuída dependendo de sua necessidade, e uma outra chave privada, que fica salva com você. Diversos sistemas utilizam este padrão, sendo uma forma de aumentar a segurança e confiabilidade dos dados manipulados, por exemplo em uma conexão remota a um servidor usando o protocolo SSH ou SFTP.

Abaixo vamos ver os passos para gerar sua chave SSH em ambiente UNIX.

Verifique se já possui chave SSH

Veja se já existe SSH keys no seu computador, em ambientes Unix pode ser encontrado, geralmente em ~/.ssh/id_dsa ou ~/.ssh/id_rsa. Para verificar digite no terminal:

$ ls -al ~/.ssh

Criar uma nova SSH Key

Se ainda não tem sua SSH key deverá gerar uma usando o comando ssh-keygen:

$ ssh-keygen -t rsa -b 4096 -C "seuemail@example.com" 

Explicando o comando acima:

  • Parâmetro -t específica o tipo de chave nesse caso usamos o algoritmo rsa para protocolo versão 2 outros possíveis valores são rsa1, dsa e ecdsa.
  • Parâmetro -C adiciona um comentário à chave pública, é apenas uma maneira fácil de identificar a finalidade desta chave, o valor pode ser user@host.
  • Parâmetro -b informa key size ou total de bits. O padrão é 2048, geralmente esse valor já é o suficiente para sua chave se quiser mais segurança use o valor máximo 4096.

ATENÇÃO: Para chaves RSA o valor mínimo é de 768 bits, mas não crie sua chave com menos de 2048 bits pois estudos apontam que é possível quebrar esses tipos de chaves.

Defina uma Passphrase

O Passphrase é como uma senha e precisa ser digitado to vez que usar a chave para se conectar SSH, se você esquecer o Passphrase ou outra pessoa ter acesso à sua Private Key ficará impossibilitado de conectar ao servidor remoto. Caso não queira definir um Passphrase apenas deixe em branco, pressione enter duas vezes para finalizar.

Copie sua chave pública para o servidor

Após executar o comando para gerar SSH keys dois arquivos serão salvos no diretório ~/ssh por padrão os arquivos são id_rsa e id_rsa.pub, mas é possível criá-los com nomes e diretórios diferentes se for necessário.

A chave pública, cujo a extensão é .pub, deve ser copiado para o servidor e o seu conteúdo é algo como:

$ cat ~/ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAAD ..... 

A chave privada tem o seguinte conteúdo:

$ cat ~/ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,BD268AA91A7517E90BB55C04957E1911 DZ+eg+9lK2ml75kZRQsko... 

e deve ter apenas permissão de leitura pelo seu usuário, altere usando o comando:

$ chmod 400 ~/.ssh/id_rsa 

Com sua SSH key pair criada, é hora de copiar a chave pública para o servidor, se você não é o administrador do servidor remoto deverá enviar o conteúdo da chave pública para o responsável fazer isso.

No servidor remoto, usando um editor de sua preferencia adicione a chave pública ao arquivo ~/.ssh/authorized_keys, ou simplesmente utilize o comando:

cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

Faça um teste com sua SSH Key

ssh user@123.456.789.0

Se sua SSH key foi salva em um diretório diferente de ~/.ssh você deverá informar o diretório onde esta a chave para para ter sucesso na conexão com servidor.

ssh -i /diretorio/subpasta/sua_chave_privada user@123.456.789.0