Gerar chave SSH

 linux

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

Referências


comments powered by Disqus