web-dev-qa-db-fra.com

Comment enlever une clé ssh?

J'ai actuellement une ancienne clé SSH téléchargée sur le serveur. Le problème est que j'ai perdu mon répertoire ~/.ssh (avec les fichiers originaux id_rsa et id_rsa.pub).

Par conséquent, je souhaite supprimer l'ancienne clé SSH directement sur le serveur et en télécharger une nouvelle.

J'ai essayé la commande suivante sans succès:

$> ssh-add -D

enter image description here

Est-il possible de supprimer complètement une clé SSH?

113
user1364743

Notez qu'il existe au moins deux rapports de bogues pour ssh-add -d/-D et non supprimer des clés:

Le problème exact est:

ssh-add -d/-D supprime uniquement les clés ajoutées manuellement à partir de gnome-keyring.
Il n’ya aucun moyen de supprimer les clés ajoutées automatiquement.
Ceci est le bogue d'origine, et il est toujours présent.

Ainsi, par exemple, si vous avez deux identités SSH chargées automatiquement, associées à deux comptes GitHub différents - par exemple, pour le travail et pour la maison -, il n'y a aucun moyen pour basculer entre eux. GitHub prend le premier qui correspond, de sorte que vous apparaissiez toujours comme votre utilisateur "à la maison" auprès de GitHub, sans aucun moyen de télécharger des éléments sur des projets professionnels.

Permettre à ssh-add -d de s'appliquer aux touches chargées automatiquement (et à ssh-add -t X de modifier la durée de vie des touches chargées automatiquement), restaurez le comportement attendu par la plupart des utilisateurs.


Plus précisément, à propos du problème:

Le coupable est gpg-keyring-daemon:

  • Il subvertit le fonctionnement normal de ssh-agent, principalement pour pouvoir afficher une jolie boîte dans laquelle vous pouvez taper la phrase secrète d'une clé ssh chiffrée.
  • Et il parcourt votre répertoire .ssh et ajoute automatiquement toutes les clés trouvées à votre agent.
  • Et cela ne vous laissera pas supprimer ces clés.

Comment on déteste ça? Ne comptons pas les moyens - la vie est trop courte.

L'échec est aggravé par le fait que les nouveaux clients ssh essaient automatiquement toutes les clés de votre agent ssh lors de la connexion à un hôte.
S'il y en a trop, le serveur rejettera la connexion.
Et puisque gnome-keyring-daemon a décidé lui-même le nombre de clés que vous voulez attribuer à votre agent ssh, et les a chargées automatiquement, ET NE VOUS PERMETTEZ PAS DE LES SUPPRIMER, vous êtes grillé.

Ce bug est toujours confirmé dans Ubuntu 14.04.4, il y a deux jours à peine (21 août 2014)


Une solution possible:

  • Faites ssh-add -D pour supprimer toutes vos clés manuellement . Ceci verrouille également les clés ajoutées automatiquement, mais n’est pas très utile puisque gnome-keyring vous demandera de les déverrouiller quand vous essayez de faire un git Push.
  • Naviguez vers votre dossier ~/.ssh et déplacez tous vos fichiers de clés, à l'exception de celui avec lequel vous souhaitez vous identifier, dans un dossier séparé appelé sauvegarde. Si nécessaire, vous pouvez également ouvrir l'hippocampe et supprimer les clés à partir de là.
  • Vous devriez maintenant pouvoir faire git Push sans problème.

Une autre solution de contournement:

Ce que vous voulez vraiment faire, c'est éteindre complètement gpg-keyring-daemon.
Allez à System --> Preferences --> Startup Applications et désélectionnez la case "SSH Key Agent (Gnome Keyring SSH Agent)" - vous devrez faire défiler l'écran vers le bas pour le trouver.

Vous aurez toujours un ssh-agent, seulement maintenant il se comportera sainement: aucune clé ne sera chargée automatiquement, vous exécuterez ssh-add pour les ajouter, et si vous voulez supprimer des clés, vous pouvez. Imagine ça.

Ce commentaire suggère en fait:

La solution consiste à empêcher gnome-keyring-manager de ne jamais démarrer, ce qui était étrangement difficile en aboutissant finalement à la suppression de l'autorisation d'exécution du fichier programme.

101
VonC

Si vous essayez d'effectuer une opération liée à ssh et obtenez l'erreur suivante:

$ git fetch
no such identity: <ssh key path>: No such file or directory

Vous pouvez supprimer la clé ssh manquante de votre agent ssh avec les éléments suivants:

$ eval `ssh-agent -s`  # start ssh agent
$ ssh-add -D <ssh key path>  # delete ssh key
7
Derek Soike

À moins que je ne comprenne mal, vous avez perdu votre répertoire .ssh contenant votre clé privée sur votre ordinateur local. Vous souhaitez donc supprimer la clé publique qui se trouvait sur un serveur et qui autorisait la connexion par clé. Dans ce cas, il sera stocké dans le fichier .ssh/authorized_keys de votre répertoire personnel sur le serveur. Vous pouvez simplement éditer ce fichier avec un éditeur de texte et supprimer la ligne pertinente si vous pouvez l'identifier (encore plus facile s'il s'agit de la seule entrée!). J'espère que cette clé n'était pas votre seule méthode d'accès au serveur et que vous disposez d'un autre moyen de vous connecter et de modifier le fichier. Vous pouvez ajouter manuellement une nouvelle clé publique au fichier authorised_keys ou utiliser ssh-copy-id. Dans les deux cas, vous devez définir une autorisation de mot de passe pour votre compte sur le serveur ou une autre méthode d’identité ou d’accès pour accéder au fichier authorized_keys sur le serveur.

ssh-add ajoute des identités à votre agent ssh qui gère la gestion de vos identités localement et "la connexion à l'agent est transférée via des connexions SSH distantes. L'utilisateur peut ainsi utiliser les privilèges accordés par les identités n'importe où sur le réseau manière sécurisée. " (page de manuel), donc je ne pense pas que ce soit ce que vous voulez dans ce cas. Il n’a aucun moyen d’obtenir votre clé publique sur un serveur sans que vous ayez accès à ce serveur via un login SSH, pour autant que je sache.

6
Tim

J'ai ouvert l'application "Mots de passe et clés" dans Monity et supprimé les clés non souhaitées de Secure Keys -> clés OpenSSH. Elles ont été automatiquement supprimées de ssh-agent -l aussi.

4
Anton Balashov

Je peux confirmer que ce bogue est toujours présent dans Ubuntu 19.04. La solution de contournement suggérée par @VonC a parfaitement fonctionné, résumant pour ma version:

  • Cliquez sur l'onglet Activités dans le coin supérieur gauche
  • Sur le champ de recherche qui apparaît, commencez à taper "applications de démarrage"
  • Cliquez sur l'icône "Applications de démarrage".
  • Dans la boîte de dialogue qui apparaît, sélectionnez l’application gnome key ring manager (vous ne pouvez pas vous souvenir du nom exact sur l’interface graphique, mais elle est suffisamment distincte) et supprimez-la.

Ce que j'ai ensuite fait est d'essayer à nouveau ssh-add -D, et après le redémarrage ssh-add -l m'a dit l'agent n'a pas d'identité. J'ai confirmé que j'avais toujours le démon ssh-agent. s'exécutant avec ps aux | grep agent. J'ai donc ajouté la clé que j'utilise le plus souvent avec GitHub (ssh-add ~/.ssh/id_ecdsa) et tout va bien!

Maintenant, je peux effectuer les opérations normales avec le référentiel le plus fréquemment utilisé. Si, occasionnellement, j'ai besoin d'un accès à l'autre référentiel utilisant la clé RSA, je lui dédie un terminal avec export GIT_SSH_COMMAND="ssh -i /home/me/.ssh/id_rsa.pub". Résolu! Le mérite revient à @VonC pour avoir signalé le bogue et la solution.

1
Nagev