web-dev-qa-db-fra.com

J'ai accidentellement publié ma phrase secrète de clé SSH, que faire?

J'ai donc confondu les champs de saisie et maintenant mon mot de passe de clé SSH est visible pour le monde entier, et je ne peux même plus le supprimer.

Pour autant que je sache, ce n'est pas un problème de sécurité immédiat, car la phrase secrète protège uniquement contre le cas de divulgation de ma clé privée elle-même. Étant donné que cela ne s'est pas produit (la clé n'existe que sur le matériel que je possède), je dois tout au plus changer la phrase secrète au cas où cela se produirait à l'avenir, je n'ai pas à changer de clé SSH partout où j'ai utilisé il.

Est-ce exact? Garder à l'esprit que tout cela concerne des projets privés et qu'une violation hypothétique pourrait tout au plus être agaçante et embarrassante.

38

Techniquement, changer votre phrase secrète est suffisant si vous ne croyez pas également que votre clé privée (protégée par mot de passe) a également été divulguée.

réaliste, vous voudrez peut-être simplement remplacer votre clé SSH par une nouvelle. Ils sont si bon marché qu'ils pourraient aussi bien être gratuits, et cela vous évite de vous soucier de savoir si quelqu'un a, est ou sera en mesure d'obtenir une copie de la clé privée avec la phrase secrète compromise. N'oubliez pas que si quelqu'un saisit une copie de votre clé que vous avez sauvegardée des mois avant de divulguer (et de modifier) ​​votre phrase secrète, la phrase secrète leur donne toujours accès à cette clé, qui est la même que celle que vous utilisez aujourd'hui sous une nouvelle phrase secrète.

Alors changez simplement votre clé. C'est une bonne pratique et des meilleures pratiques.

Modifier:

@ David-Z a suggéré que le temps nécessaire au remplacement de la clé est un coût à considérer. Je maintiens que, puisque nous parlons de clés, c'est également négligeable, car vous pouvez automatiser le processus. Le script suivant m'a pris environ 15 minutes pour écrire et tester:

#!/bin/bash

for i in $*
do
    cat newkey.pub | ssh -i oldkey username@$i "cat >> ~/.ssh/authorized_keys"
    ssh -i newkey username@$i "sed -n '/my_old_key/!p' < ~/.ssh/authorized_keys > ~/.ssh/authorized_keys_tmp && mv ~/.ssh/authorized_keys_tmp ~/.ssh/authorized_keys"
    if [ $? -eq 0 ]; then
       echo "Successful key replacement for $i"
    else
       echo "Key replacement failed for $i"
    fi
done

Ce script:

  1. Utilisez l'ancienne clé pour ajouter la nouvelle clé aux touches autorisées à distance
  2. Utilisez la nouvelle clé pour supprimer l'ancienne clé des touches_autorisées distantes

La beauté est que si quelque chose se passe mal en poussant la nouvelle clé, la suppression de l'ancienne clé échouera car elle utilise la nouvelle clé, vous êtes donc moins susceptible de vous tirer une balle dans le pied.

Vous devrez mettre en cache vos mots de passe avec ssh-agent afin qu'il ne vous invite pas à ces utilisations de ssh; puis exécutez-le avec les serveurs que vous souhaitez mettre à jour sur la ligne de commande:

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-GWE6uxZxn9IS/agent.2016; export SSH_AUTH_SOCK;
SSH_AGENT_PID=2017; export SSH_AGENT_PID;
echo Agent pid 2017;
$ ssh-add oldkey
Enter passphrase for oldkey: 
Identity added: oldkey (oldkey)
$ ssh-add newkey
Enter passphrase for newkey: 
Identity added: newkey (newkey)
$ ./chssh.sh server1 server2 server3
Successful key replacement for server1
Successful key replacement for server2
Successful key replacement for server3
$ 
48
gowenfawr

La modification de la phrase secrète d'une clé existante peut être effectuée avec:

ssh-keygen -p

... vous n'avez cependant pas fini maintenant. Vous devez également prendre en considération des copies de vos anciennes clés, celles-ci doivent être supprimées ou elles doivent être traitées comme compromises. Pensez aux sauvegardes, mais aussi aux données sur les systèmes de fichiers (les systèmes de fichiers copiés sur écriture tels que ZFS et btrfs peuvent conserver une copie quelque part sur le backend de stockage).

La modification de votre phrase secrète est une solution à court terme si vous pensez que votre fichier de clés peut être divulgué. Si vous ne pouvez pas être sûr que toutes les copies de votre ancienne clé privée ont disparu, vous devez envisager de modifier votre fichier de clé privée.

N'oubliez pas tous les services auxquels votre clé publique est également attachée. Fuir votre clé est un problème, violer d'autres systèmes serait un mauvais effet secondaire.

20
Lekensteyn