Comment supprimer une clé SSH?

j'ai actuellement une vieille 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 veux 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 un moyen de complètement enlever une clé SSH?

84
demandé sur VonC 2014-08-23 22:13:15

5 réponses

notez qu'il y a au moins deux rapports de bogue pour ssh-add -d/-D pas supprimer les clés:

L'exact le problème est:

ssh-add -d/-D supprime seulement ajouté manuellement clés de gnome-keyring.

Il n'y a aucun moyen de supprimer automatiquement les clés ajoutées.

C'est le bug original, et il est toujours présent.

donc, par exemple, si vous avez deux identités SSH différentes chargées automatiquement associées à deux comptes GitHub différents -- disons pour le travail et pour la maison ... il y a pas moyen de passer entre eux. GitHubtakes est le premier qui correspond, donc vous apparaissez toujours comme votre utilisateur "maison" à GitHub, sans aucun moyen de télécharger des choses pour travailler des projets.

permettant à ssh-add -d de s'appliquer aux clés chargées automatiquement (et ssh-add -t X pour changer la durée de vie des clés chargées automatiquement), restaurerait le comportement que la plupart des utilisateurs attendent.


plus précisément, sur le thème:

le coupable est gpg-keyring-daemon :

  • il subvertit le fonctionnement normal de ssh-agent, surtout juste pour qu'il puisse surgir une jolie boîte dans laquelle vous pouvez taper la phrase de passe pour une clé SSH cryptée.
  • et il tape à travers votre répertoire .ssh , et ajoute automatiquement toutes les clés qu'il trouve à votre agent.
  • et il ne vous laissera pas effacer ces clés.

comment détestons-nous cela? Il ne faut pas les moyens, la vie est trop courte.

l'échec est aggravé parce que les nouveaux clients SSH essayent automatiquement toutes les clés de votre agent ssh lorsqu'ils se connectent à un hôte.

S'il y en a trop, le serveur rejettera la connexion.

Et depuis gnome-keyring-daemon a décidé pour lui-même combien de clés vous voulez que votre ssh-agent d'avoir, et a autolaé eux, et ne vous laissera pas les supprimer, vous êtes grillé.

ce bug est toujours confirmé dans Ubuntu 14.04.4, aussi récemment qu'il y a deux jours (21 août 2014)""


une solution possible:

  • Do ssh-add -D pour supprimer tous vos manuellement ajouté touches. Cette verrouille également les touches automatiquement ajoutées, mais n'est pas très utile car gnome-keyring vous demandera de les déverrouiller de toute façon lorsque vous essayez de faire un git push .
  • naviguez vers votre dossier ~/.ssh et déplacez tous vos fichiers clés sauf celui que vous voulez identifier dans un dossier séparé appelé sauvegarde. Si nécessaire, vous pouvez également ouvrir seahorse et supprimer les clés de là.
  • Maintenant vous devriez être en mesure de faire git push sans problème.

une Autre solution:

ce que vous voulez vraiment faire est d'éteindre gpg-keyring-daemon tout à fait.

Allez à System --> Preferences --> Startup Applications , et désélectionnez la boîte SSH Key Agent (Gnome Keyring SSH Agent) -- vous aurez besoin de faire défiler vers le bas pour le trouver.

vous aurez toujours un ssh-agent , seulement maintenant il se comportera sainement: pas de touches autoloadées, vous exécutez ssh-add pour l'ajouter, et si vous voulez supprimer les clés, vous pouvez. Imaginez que.

Ce commentaires en fait, suggère:

la solution est d'empêcher gnome-keyring-manager de démarrer, ce qui a été étrangement difficile en enlevant finalement la permission d'exécution du fichier de programme.

77
répondu VonC 2017-03-20 10:18:25

sauf erreur de ma part, vous avez perdu votre répertoire .ssh contenant votre clé privée sur votre machine locale et vous voulez donc supprimer la clé publique qui se trouvait sur un serveur et qui permettait une connexion par clé. Dans ce cas, il sera stocké dans la .ssh/authorized_keys dans votre répertoire personnel sur le serveur. Vous pouvez éditer ce fichier avec un éditeur de texte et de supprimer la ligne correspondante si vous pouvez l'identifier (encore plus facile si c'est la seule entrée!). J'espère que la clé n'était pas seulement votre méthode d'accès au serveur et que vous avez une autre façon de se connecter et de modifier le fichier. Vous pouvez soit ajouter manuellement une nouvelle clé publique au fichier authorised_keys , soit utiliser ssh-copy-id . Dans tous les cas, vous aurez besoin d'auth mot de passe configuré 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 redirigé sur les logins distants SSH, et l'utilisateur peut ainsi utiliser les privilèges donnés par les identités n'importe où dans le réseau d'une manière sécurisée."(man page), donc je ne pense pas que ce soit ce que vous voulez dans cette affaire. Il n'y a aucun moyen d'obtenir votre clé publique sur un serveur sans que vous ayez accès à ce serveur via un login ssh à ma connaissance.

5
répondu Tim 2014-08-23 18:47:14

la manière la plus simple serait

ssh-keygen -R hostname
5
répondu R J 2014-08-24 00:56:52

j'ai ouvert l'application "Mots de passe et clés" dans mon unité et retiré les clés non désirées de Secure Keys - > OpenSSH keys Et ils avaient été automatiquement retirés de ssh-agent-l ainsi.

1
répondu Anton Balashov 2017-06-13 11:21:21

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

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

vous pouvez retirer la clé SSH manquante de votre agent ssh avec ce qui suit:

$ eval `ssh-agent -s`  # start ssh agent
$ ssh-add -D <ssh key path>  # delete ssh key
0
répondu Derek Soike 2018-06-07 17:30:40