Como substituir o par de chaves privadas-públicas ssh?

1

Se eu sentir que meu ssh original foi comprometido, porque alguém tem a frase secreta, Preciso substituir o par de chaves privado e público ou apenas alterar a frase secreta? Qual é a solução e como faço isso?

obrigado

    
por pileup 01.06.2018 / 21:57

1 resposta

1

Se você sabe que alguém tem a frase secreta, ele provavelmente usou sua chave ssh. Se esse for o caso, provavelmente não há como saber se essa pessoa copiou sua chave ssh ou não. Se essa pessoa tiver uma cópia da sua chave e você alterar a senha da sua chave, a cópia obviamente ainda usa a frase-senha antiga e é, portanto, utilizável por essa pessoa. Então, para estar no lado seguro, eu recomendaria substituir sua chave ssh.

Você pode gerar uma nova chave executando

ssh-keygen -f ~/.ssh/new-key

Isso criará uma nova chave ssh em ~/.ssh/new-key .

Não se esqueça de não apenas criar uma nova chave, mas de remover sua chave antiga de todas as máquinas que a possuem.

Update: Para fazer isso, primeiro faça uma lista de todas as máquinas que você pode acessar com essa chave ssh. Então, para cada uma dessas máquinas, faça o seguinte:

user@local:~$ ssh someuser@somemachine
someuser@somemachine:~$ nano .ssh/authorized_keys

Edite esse arquivo e faça o seguinte:

  1. remova a linha que contém sua chave ssh antiga. Se houver apenas uma linha que seja fácil, se não procurar por uma linha que termine com as mesmas letras enigmáticas da sua chave pública antiga. Você pode ver sua antiga chave pública executando cat ~/.ssh/id_rsa.pub em sua máquina local (supondo que sua chave antiga seja id_rsa, se não você tem que ajustar o comando). Para deletar uma linha em nano , simplesmente pressione Ctrl + K .
  2. adicione sua nova chave pública a esse arquivo. Você encontra a nova chave pública em sua máquina local usando cat ~/.ssh/new-key.pub . Copie toda a linha textualmente para o arquivo como uma única linha.
  3. Salve o arquivo pressionando Ctrl + O , Digite e Ctrl + X para sair de nano .

Em seguida, teste se você pode acessar a máquina com sua nova chave sem fechar a conexão existente (então você ainda está conectado no caso de algo dar errado).

user@local:~$ ssh -i ~/.ssh/new-key someuser@somemachine

Se isso funcionar e você estiver conectado à máquina remota, você substituiu com sucesso a chave ssh nessa máquina. Agora continue com a próxima máquina. Repita até terminar.

Você pode automatizar um pouco todo esse processo:

ssh-copy-id -i ~/.ssh/new-key.pub someuser@somemachine
ssh -i ~/.ssh/new-key someuser@somemachine "sed -i.bak 's/$(cut -f2 ~/.ssh/id_rsa.pub | sed 's~/~\/~g')/d' ~/.ssh/authorized_keys"

Mas não tenho garantia de que isso funcionará e não o prenderá de algumas máquinas. Use a seu próprio risco!

O que ele faz é usar ssh-copy-id para copiar sua nova chave e usar sed para remover sua chave antiga do arquivo authorized_keys . $(cut -f2 ~/.ssh/id_rsa.pub | sed 's~/~\/~g') adiciona sua chave pública antiga ao comando para que possa procurá-la e evite barras. /some-string/d remove todas as linhas correspondentes da string (no nosso caso, sua chave antiga) do arquivo.

Faça isso somente se tiver muitas máquinas para alterar sua chave e testá-la primeiro em uma máquina para a qual você tenha acesso físico ou outra maneira de restaurar o acesso se algo der errado. Fim da atualização

Depois de substituir sua chave antiga, você pode renomear sua chave para ~/.ssh/id_rsa , então ssh a encontra automaticamente. Você pode querer manter um backup da sua chave antiga caso tenha esquecido um sistema ao qual você não teria mais acesso.

Atualização: para fazer isso, basta executar:

cd ~/.ssh
mv id_rsa id_rsa_old
mv id_rsa.pub id_rsa_old.pub
mv new-key id_rsa
mv new-key.pub id_rsa.pub

Se você precisar usar sua chave antiga para algo novamente, use ssh -i ~/.ssh/id_rsa_old para usá-la. Não se esqueça de adicionar sua nova chave a essa máquina e remover a chave antiga.

    
por Lienhart Woitok 01.06.2018 / 22:18