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ãorsa1
,dsa
eecdsa
. - Parâmetro
-C
adiciona um comentário à chave pública, é apenas uma maneira fácil de identificar a finalidade desta chave, o valor pode seruser@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áximo4096
.
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