Cómo eliminar una clave ssh?


Actualmente tengo una vieja clave SSH cargada en el servidor. El problema es que perdí mi directorio ~/.ssh (con los archivos originales id_rsa y id_rsa.pub).

En consecuencia, quiero eliminar la antigua clave SSH directamente en el servidor y cargar una nueva.

Probé el siguiente comando sin éxito:

$> ssh-add -D

introduzca la descripción de la imagen aquí

¿Hay alguna forma de eliminar completamente una clave SSH?

Author: VonC, 2014-08-23

5 answers

Tenga en cuenta que hay al menos dos informes de errores para ssh-add -d/-D no eliminar claves:

La cuestión exacta es:

ssh-add -d/-D elimina solo las claves añadidas manualmente de gnome-keyring.
No hay manera de borrar teclas añadidas automáticamente.
Este es el error original, y todavía está definitivamente presente.

Así que, por ejemplo, si tienes dos identidades ssh cargadas automáticamente diferentes asociadas con dos cuentas GitHub diferentes say digamos para el trabajo y para el hogar {no hay forma de cambiar entre ellas. GitHub toma el primero que coincide, por lo que siempre aparece como su usuario 'hogar' a GitHub, sin forma de subir cosas a los proyectos de trabajo.

Permitiendo a ssh-add -d apply to automatically-loaded keys (and ssh-add -t X to change the lifetime of automatically-loaded keys), would restore the behavior most users expect.


Más precisamente, sobre el tema:

El culpable es gpg-keyring-daemon:

  • Subvierte el funcionamiento normal de ssh-agent, principalmente para que pueda abrir una bonita caja en la que puede escribir la frase de contraseña para una clave ssh cifrada.
  • Y las patas a través de su .ssh directorio, y agrega automáticamente cualquier clave que encuentre a su agente.
  • Y no te permitirá borrar esas claves.

¿Cómo odiamos esto? No contemos las formas life la vida es muy corta.

El error se agrava porque los clientes ssh más nuevos prueban automáticamente todas las claves de su ssh-agent cuando se conectan a un host.
Si hay demasiados, el servidor rechazará la conexión.
Y desde gnome-keyring-daemon ha decidido por sí mismo cuántos claves que desea que su ssh-agent tenga, y las ha cargado automáticamente, Y NO LE PERMITIRÁ ELIMINARLAS, está frito.

Este error aún está confirmado en Ubuntu 14.04.4, hace tan solo dos días (21 de agosto de 2014)


Una posible solución:

  • Haga ssh-add -D para eliminar todas sus manualmente claves agregadas. Esto también bloquea las claves agregadas automáticamente, pero no es mucho uso ya que gnome-keyring le pedirá que las desbloquee de todos modos cuando intente hacer un git push.
  • Navegue hasta su carpeta ~/.ssh y mueva todos sus archivos clave excepto el que desea identificar en una carpeta separada llamada copia de seguridad. Si es necesario, también puede abrir seahorse y eliminar las teclas desde allí.
  • Ahora deberías poder hacer git push sin ningún problema.

Otra solución:

Lo que realmente quieres hacer es apagar gpg-keyring-daemon por completo.
Vaya a System --> Preferences --> Startup Applications, y deseleccione la casilla "SSH Key Agent (Gnome Keyring SSH Agent)" -- tendrás que desplazarte hacia abajo para encontrarlo.

Todavía obtendrá un ssh-agent, solo que ahora se comportará sanamente: sin claves cargadas automáticamente, ejecute ssh-add para agregarlas, y si desea eliminar claves, puede hacerlo. Imagina eso.

Este comentario en realidad sugiere:

La solución es evitar que gnome-keyring-manager se inicie, lo que fue extrañamente difícil al lograr finalmente eliminar el permiso de ejecución del archivo de programa.

 77
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-20 10:18:25

A menos que esté mal entendido, perdió su directorio .ssh que contiene su clave privada en su máquina local y por lo que desea eliminar la clave pública que estaba en un servidor y que permitía el inicio de sesión basado en la clave. En ese caso, se almacenará en el archivo .ssh/authorized_keys en su directorio personal en el servidor. Solo puede editar este archivo con un editor de texto y eliminar la línea relevante si puede identificarlo (¡aún más fácil si es la única entrada!). Espero que esa llave no fuera tu único método de acceso a la servidor y usted tiene alguna otra forma de iniciar sesión y editar el archivo. Puede agregar manualmente una nueva clave pública al archivo authorised_keys o usar ssh-copy-id. De cualquier manera, necesitará la autenticación de contraseña configurada para su cuenta en el servidor, o alguna otra identidad o método de acceso para acceder al archivo authorized_keys en el servidor.

ssh-add agrega identidades a su agente ssh que maneja la administración de sus identidades localmente y "la conexión al agente se reenvía a través de inicios de sesión remotos SSH, y el usuario puede utilice los privilegios dados por las identidades en cualquier lugar de la red de una manera segura."(página de manual), así que no creo que sea lo que quieres en este caso. No tiene forma de obtener su clave pública en un servidor sin que tenga acceso a dicho servidor a través de un inicio de sesión ssh que yo sepa.

 5
Author: Tim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-23 18:47:14

La forma más simple sería

ssh-keygen -R hostname
 5
Author: R J,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-24 00:56:52

Abrí la aplicación "Contraseñas y claves" en mi Unity y eliminé las claves no deseadas de Secure Keys -> Llaves de OpenSSH Y automáticamente habían sido removidos de ssh-agent-l también.

 1
Author: Anton Balashov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-13 11:21:21

Si está intentando realizar una operación relacionada con ssh y obtiene el siguiente error:

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

Puede eliminar la clave ssh que falta de su agente ssh con lo siguiente:

$ eval `ssh-agent -s`  # start ssh agent
$ ssh-add -D <ssh key path>  # delete ssh key
 0
Author: Derek Soike,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-07 17:30:40