Gerenciamento de chaves ssh

Olá pessoal,

Gostaria de pedir uma dica para programadores mais experientes em relação a gestão de chaves ssh, nesse caso são chaves para conexão de com servidores EC2 da AWS.

Me ocorreu o seguinte:

Eu tenho um projeto (de pesquisa) que desenvolvo e está versionado com git (e gitlab), e para rodar alguns experimentos utilizo um servidor AWS. Naturalmente a conexão é feita com ssh e como boa prática coloquei as chaves da AWS no gitignore, ficando somente disponíveis localmente.

Tive um problema com meu Ubuntu e precisei reinstalar o sistema e acabei perdendo as chaves (por que não estavam no gitlab). Isso me gerou um certo retrabalho, pois uma vez a chave perdida precisei derrubar a máquina na AWS e iniciar outra com uma chave nova e etc.

Minhas dúvidas são:

    1. É de fato uma boa prática não subir chaves ssh para repositórios git?
    1. Não “versionando” as chaves qual seria uma boa prática de backup para esse tipo de arquivo? Sobretudo na possibilidade de perder acesso local a chave (problema de hardware ou corromper o sistema e etc)
    1. Na prática de quem trabalha no dia a dia com esse tipo de acesso remoto como é feita essa gestão de chaves?

Obs:
Não sou programador por formação, venho da engenharia e minhas experiências de “programador” estão mais ligadas a pesquisa em projetos com grupos pequenos que não estão ligados a dados “sensíveis”. Se a pergunta for muito banal peço desculpas aos colegas =)

1 curtida

1 - sim, o ponto da existência de chaves é justamente de que só quem tiver um key registrada pelo servidor possa logar através de SSH e o manipular, colocar tuas chaves no repositório é escancarar a porta pra qualquer um que tenha acesso.
2 - qualquer lugar que vc considerar confiável, algumas pessoas preferem usar gerenciadores de senhas, outras encriptam e colocam numa nuvem, vai de cada um.
3 - existem gerenciadores de chaves pra isso, mas em geral são bem frustrantes de se usar e em projetos maiores é preferivel usar autenticação baseada em certificados.

2 curtidas

Sobre seus 3 pontos é o que o Fenrir já disse.
As chaves são “arquivos de texto” que você pode copiar e colar em um gerenciador de senhas de sua confiança
Mas o que pode ser feito, como você já está utilizando o gitlab você pode criar webhooks que quando você fizer alterações no projeto (e fazer o push no gitlab) automaticamente será atualizado na AWS.
Se você utiliza ssh para acessar o gitlab neste caso se você perder a chave você terá que recriar somente a chave de configuração do gitlab, mas não será necessário derrubar a máquina na AWS.

1 curtida

Obrigado pela resposta, como é um projeto de pesquisa e com poucos colaboradores provavelmente vou fazer backup dessas chaves em alguma nuvem pessoal mesmo.

Abraços,

Obrigado @Rogerio, vou considerar essa opção também, além das dicas do @Fenrir =)

1 curtida