Sempre fico em dúvida para gerar chaves SSH, deve ser pelo tempo que demoro para ter de fazer de novo. Por isso resolvi fazer uma anotação. Espero que seja útil a você também.

Primeiramente geramos a chave:

$ ssh-keygen -t rsa -b 4096 -C <email> -f "<nome-do-arquivo>" -N ""

Onde:

  • -t o tipo da chave a ser gerada: rsa1 (antiga), rsa (2ª versão), dsa, ecdsa, ed25519
  • -b quantidade de bits utilizados para geração da chave
  • -C adiciona um comentário na hash gerada (geralmente usado para inserir o email)
  • -f indica o nome do arquivo a ser salvo
  • -N define uma senha (passphrase) para o par de chaves (se for inserido algo, sempre que precisar utilizar a chave precisará redigitar essa senha)

Um exemplo prático seria:

Nota: No post utilizo a pasta $HOME/.ssh/ com o arquivo exemplo_rsa, mas você pode alterar os 2 para os nomes e lugares que quiser. Basta apenas substituir pelo que quer nas partes onde o caminho/arquivo citado é utilizado:

$ ssh-keygen -t rsa -b 4096 -C "email@flaverton.com" -f "$HOME/.ssh/exemplo_rsa" -N ""

O próximo comando transforma a saída do comando ssh-agent -s em declarações de variáveis chave=valor.

$ eval "$(ssh-agent -s)"

Agora iremos adicionar a chave privada a máquina atual e fazer com que ela - a chave privada - fique registrada:

$ ssh-add "$HOME/.ssh/exemplo_rsa"

Usando em servidores

Para enviar para um servidor e conectar usando o par de chaves SSH, não precisando de senha utilize o comando abaixo, que fará a cópia de modo mais simples.

$ ssh-copy-id <usuario-remoto>@<servidor>

Algo como:

$ ssh-copy-id flaverton@192.168.3.50

Em seguida, depois de apertar enter digite a senha de conexão neste servidor, pronto a próxima vez que se conectar ele não irá pedir senha.

Enviar para serviços web

Para copiar o conteúdo da chave pública e enviar ao Github, Gitlab, Digital Ocean, Scaleway e serviços similares pode simplesmente copiar a saída do comando abaixo para o campo que é pedido nos serviços:

cat "$HOME/.ssh/exemplo_rsa.pub"

O arquivo correto é o .pub, que é sua chave pública.

Vá ao site ou onde deseja colar a chave e aperte ctrl+v ou botão direito e clicar em colar, pronto.

Listar as chaves cadastras

Para isso utilizaremos as flags -l e/ou -L do comando ssh-add, que fará a exibição das chaves em 2 modos, do fingerprint ou da chave completa (formato OpenSSH), como é indicado nessa resposta do Stackoverflow.

  • Para fingerprint
$ ssh-add -l
  • Para formato OpenSSH
$ ssh-add -L

Persistência das chaves

Referências