¿Cómo eliminar una clave ssh?

154

Actualmente tengo una vieja clave SSH cargada en un servidor. El problema es que perdí mi ~/.sshdirectorio (con el original id_rsay los id_rsa.pubarchivos).

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

Intenté el siguiente comando sin éxito:

$> ssh-add -D

ingrese la descripción de la imagen aquí

¿Hay alguna manera de eliminar por completo una clave SSH?

usuario1364743
fuente
Lo que con ssh-add -d?
user2196728
55
maldita sea, es ssh-add -D, mayúscula
Alexander Mills
Verifique los enchufes que está utilizando su agente ssh (1).
Dwight Spencer

Respuestas:

129

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

El problema exacto es:

ssh-add -d/-Delimina solo las claves agregadas manualmente de gnome-keyring.
No hay forma de eliminar las claves agregadas automáticamente.
Este es el error original, y todavía está definitivamente presente.

Entonces, por ejemplo, si tiene dos identidades ssh cargadas automáticamente diferentes asociadas con dos cuentas GitHub diferentes, por ejemplo, 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 'principal' en GitHub, sin forma de cargar cosas para proyectos de trabajo.

Permitir ssh-add -daplicar a cargado automáticamente claves (y ssh-add -t Xcambiar la vida útil de las claves cargadas automáticamente) restablecería el comportamiento que la mayoría de los usuarios esperan.


Más precisamente, sobre el tema:

El culpable es gpg-keyring-daemon :

  • Subvierte el funcionamiento normal de ssh-agent, principalmente solo para que pueda abrir un cuadro bonito en el que puede escribir la frase de contraseña para una clave ssh cifrada.
  • Y las patas atraviesan tu .ssh directorio, y agrega automáticamente cualquier clave que encuentre a su agente.
  • Y no te permitirá eliminar esas claves.

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

El error se agrava porque los clientes ssh más nuevos prueban automáticamente todas las claves en su agente ssh cuando se conectan a un host.
Si hay demasiados, el servidor rechazará la conexión.
Y dado que gnome-keyring-daemon ha decidido por sí mismo cuántas claves desea que tenga su agente ssh, y las ha autocargado, Y NO PERMITE ELIMINARLAS, está tostado.

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


Una posible solución alternativa:

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

Otra solución alternativa:

Lo que realmente quieres hacer es apagar por gpg-keyring-daemoncompleto.
Ve a System --> Preferences --> Startup Applicationsy desmarca la SSH Key Agent (Gnome Keyring SSH Agent)casilla " ". Necesitarás desplazarte hacia abajo para encontrarlo.

Todavía obtendrá un ssh-agent, solo que ahora se comportará de manera sensata: no se cargan automáticamente las teclas, ejecuta ssh-add para agregarlas, y si desea eliminar las teclas, puede hacerlo. Imagina eso.

Este comentario realmente sugiere:

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


Ryan Lue agrega otro caso interesante en los comentarios :

En caso de que esto ayude a alguien: incluso intenté eliminar los archivos id_rsay por id_rsa.pubcompleto, y la clave seguía apareciendo.

Resulta que los gpg-agentestaba almacenando en caché en un ~/.gnupg/sshcontrolarchivo ; Tuve que eliminarlos manualmente desde allí.

Ese es el caso cuando elkeygrip se ha añadido como aquí .

VonC
fuente
1
Otra opción en Ubuntu 14-16 es usar la gui 'Contraseñas y claves' (puede buscar ssh para encontrarla). Elija qué teclas, por ejemplo, OpenSS, luego haga clic derecho en la tecla y elija eliminar. Es posible que deba reiniciar su sistema para ver si se ha eliminado.
usuario3257693
2
¿Por qué esta información sobre la ssh-agenty ssh-addla respuesta seleccionada? El cartel original decía que él quiere remove the old SSH key directly on the server and upload a new one. Parece que quiere editar ~/.ssh/authorized_keysen el host remoto.
H2ONaCl
1
Esta respuesta me llevó a resolver un problema que aparece con el reenvío ssh habilitado. Pasar de una máquina Ubuntu 16.04 a un sistema debian donde todas las credenciales ssh se reenvían git cloneutilizando una primera clave en la cadena en lugar de la versión en el archivo de configuración en el cuadro de Ubuntu. La clave incorrecta fue absorbida automáticamente y enviada a la caja de Debian.
redfive
1
Este es un verdadero dolor en la parte trasera. Estoy trabajando en proyectos de la empresa y contratado para trabajar en otra empresa. Esto solo agrega tiempo perdido a la gestión de ambos. ¡Espero que pronto llegue una solución!
joshlsullivan
1
En caso de que esto ayude a alguien: incluso intenté eliminar los archivos id_rsay por id_rsa.pubcompleto, y la clave seguía apareciendo. Resulta que gpg-agent los estaba almacenando en caché en un ~/.gnupg/sshcontrolarchivo; Tuve que eliminarlos manualmente desde allí.
Ryan Lue
10

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
Derek Soike
fuente
9

A menos que esté malentendido, perdió su .sshdirectorio que contiene su clave privada en su máquina local y, por lo tanto, desea eliminar la clave pública que estaba en un servidor y que permitía el inicio de sesión basado en claves. En ese caso, se almacenará en el .ssh/authorized_keysarchivo en su directorio de inicio en el servidor. Puede editar este archivo con un editor de texto y eliminar la línea relevante si puede identificarlo (¡incluso más fácil si es la única entrada!). Espero que esa clave no haya sido su único método de acceso al servidor y que tenga otra forma de iniciar sesión y editar el archivo. Puede agregar manualmente una nueva clave pública al authorised_keysarchivo o usar ssh-copy-id. De cualquier manera, necesitará configurar la autenticación de contraseña para su cuenta en el servidor, o algún otro método de identidad o acceso para acceder al authorized_keysarchivo en el servidor.

ssh-addagrega 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 usar los privilegios otorgados por las identidades en cualquier lugar de la red de manera segura". (página de manual), así que no creo que sea lo que quieres en este caso. Hasta donde yo sé, no tiene forma de obtener su clave pública en un servidor sin que usted tenga acceso a dicho servidor a través de un inicio de sesión ssh.

Tim
fuente
Eliminé este archivo y aún puedo conectarme. Así que definitivamente no estaba contenido aquí ... Era una clave agregada automáticamente pero aún no existe en ningún lado.
Larry
5

Abrí la aplicación "Contraseñas y claves" en mi Unity y eliminé claves no deseadas de Claves seguras -> Claves OpenSSH. Y también se eliminaron automáticamente de ssh-agent -l .

Anton Balashov
fuente
2
Tenga en cuenta que esto también los elimina del directorio~/.ssh
Peter V. Mørch
1

Puedo confirmar que este error todavía está presente en Ubuntu 19.04. La solución sugerida por @VonC funcionó perfectamente, resumiendo para mi versión:

  • Haga clic en la pestaña Actividades en la esquina superior izquierda
  • En el cuadro de búsqueda que aparece, comience a escribir "aplicaciones de inicio"
  • Haga clic en el icono "Aplicaciones de inicio"
  • En el cuadro que aparece, seleccione la aplicación de administrador de llavero gnome (no recuerdo el nombre exacto en la GUI pero es lo suficientemente distintivo) y elimínelo.

Lo que hice a continuación fue volver a intentarlo ssh-add -D, y después de reiniciar ssh-add -lme dijo que el agente no tiene identidades. Confirmé que todavía tenía al ssh-agentdemonio corriendo ps aux | grep agent. Así que agregué la clave que uso con más frecuencia con GitHub ( ssh-add ~/.ssh/id_ecdsa) y todo está bien.

Ahora puedo hacer las operaciones normales con mi repositorio utilizado con más frecuencia, y si ocasionalmente necesito acceso al otro repositorio que usa la clave RSA, solo le dedico un terminal export GIT_SSH_COMMAND="ssh -i /home/me/.ssh/id_rsa.pub". Resuelto! El crédito va a @VonC por señalar el error y la solución.

Nagev
fuente
1

Verifique la clave .ssh o no en su sistema

  1. Vaya a la carpeta -> /Users/administrator/.ssh/id_ed25519.pub

Si no que

  1. Terminal abierta

Pasado en la terminal

  1. Comprobar usuario -> ssh -T [email protected]

Eliminar la clave .ssh existente

  1. Eliminar la clave .ssh existente -> rm ~ / .ssh / github_rsa.pub

Crear nuevo

  1. Crear nueva clave .ssh -> ssh-keygen -t rsa -b 4096 -C "[email protected]"

  2. La clave pública se ha guardado en "/Users/administrator/.ssh/id_ed25519.pub".

  3. Abrir clave pública ruta guardada.
  4. Copie la clave .ssh -> Cuenta GitLab -> Configuración -> Clave SSH -> Agregar clave
  5. Pruebe nuevamente desde la terminal -> ssh -T [email protected]
Niraj Paul
fuente
0

La solución para mí (OpenSuse Leap 42.3, KDE) fue cambiar el nombre de la carpeta ~/.gnupgque aparentemente contenía las claves y los perfiles en caché. Después de cerrar sesión / iniciar sesión en KDE, ssh-add / agent se está ejecutando nuevamente y la carpeta se crea desde cero, pero las claves antiguas se han ido.

No tuve éxito con los otros enfoques.

Doug0
fuente