É sabido pela maioria dos usuários de chaves RSA que elas são composta por um par de chaves chamadas de “chave pública” e “chave privada” e que caso você as perca, precisará criar outro par e substituí-lo onde quer que a antigo tenha sido usado, o que nem sempre é tão fácil. Mas o que poucos sabem ou não se recordam é que caso você tenha perdido apenas a parte pública (mas ainda tenha a parte privada) é possível extrair a parte pública novamente.
Chaves RSA são muito usadas para conexões SSH. Sejam servidores e appliances remotos ou serviços específicos como os populares repositórios Git, estas chaves são usadas em par onde a parte chamada de privada fica em um arquivo que estará devidamente protegido e seguro exclusivamente em sua máquina local, enquanto que o arquivo contendo a parte pública, você deverá enviar para o servidor SSH ou servidor Git que se deseja acessar.
Quem, por algum descuido ou acidente, já perdeu uma parte de sua chave deve saber a chateação que é substituí-la em todos os serviços onde elas são usadas, então ter um controle disso é importante.
Como a maioria dos usuários tomam o devido cuidado com estes preciosos arquivos, talvez a substituição por causa de perda não seja tão comum, daí o raro conhecimento sobre a possibilidade de gerar a parte pública novamente.
Extraindo a parte pública de uma chave RSA
O comando abaixo é o que faz isso. Considerando que “id_rsa” é o nome do arquivo com a chave privada e que está na minha máquina local, o comando ssh-keygen vai extrair a parte pública dele (devido ao parâmetro “-y”) e então salva-la no arquivo “id_rsa.pub”.
ssh-keygen -y -f id_rsa >id_rsa.pub
Este comando não retornará qualquer saída na tela, no entanto ambos os arquivos id_rsa (privada) e id_rsa.pub (pública) estarão no diretório atual para seu uso.
Aplicações para isso
Além de poder usar para restaurar o arquivo perdido por acidente, meu uso para este recurso é simplificar o backup de minhas chaves.
Ao invés de salvar os dois arquivos, eu salvo apenas as chaves privadas, no meu gerenciador de senhas e quando preciso da parte pública eu a obtenho usando o comando acima.
O processo para fazer isso pode varia de um gerenciador para outro, mas poderia ser feito manualmente também como mostrado, então fica a sugestão e faça bom uso desta dica.